首先请分析两个例子:
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("键盘输入结束"); } }