键盘缓冲区——实现多行无标识结束输入

    科技2025-05-06  11

    键盘缓冲区——实现多行无标识结束输入

    首先请分析两个例子:

    import java.util.*; public class Test05 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=1; while(sc.hasNext()) { String s=sc.nextLine(); System.out.println("缓存区有字符"); } } }

    输入 :1 2 3

    输出结果:缓存区有字符

    例子2

    import java.util.*; public class Test05 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=1; while(sc.hasNext()) { String s=sc.next(); System.out.println("缓存区有字符"); } } }

    输入: 1 2 3

    输出:

    缓存区有字符

    缓存区有字符

    缓存区有字符

    为什么会这样呢?简要分析下原理:

    在while()循环中,首先用sc.hasNext接受键盘的输入并把输入的放入缓冲扫描区,再建立一个String s用来吸收缓冲区的字符。nextLine()一次吸收一行,输入的 1 2 3一次性被吸收。

    如何用while()实现无标识结束多组输入呢?以下代码可实现

    ``

    import java.util.*; public class Test05 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=1; while(sc.hasNextLine()) { String s=sc.nextLine(); if(!s.equals("")) System.out.println("缓存区有字符"); else break; } System.out.println("键盘输入结束"); } }
    Processed: 0.012, SQL: 8