两者之间有什么区别
String s2 = scan.nextLine();
和
String s2 = scan.next() + scan.nextLine();
答案 0 :(得分:0)
尝试以下代码段:
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
String s2 = scanner.next()+ scanner.nextLine();
System.out.println("scanner.nextLine(): "+ s);
System.out.println("scanner.next()+ scanner.nextLine(): " + s2);
输入+输出:
//Input
hello <enter pressed here>
world <enter pressed here>
//Output
scanner.nextLine(): hello
scanner.next()+ scanner.nextLine(): world
nextLine()方法使用缓冲的输入来读取用户输入的字符串。缓冲输入意味着允许用户退格并更改String直到用户按下Enter键-在这种情况下,这将返回第一个输入的数字。 next()方法查找并返回扫描器的下一个完整令牌,即在这种情况下将返回最后一个输入值。
答案 1 :(得分:0)
Reg。 Scanner javadoc
next()
-查找并返回此扫描仪的下一个完整令牌。
nextLine()
-将此扫描仪前进到当前行并返回被跳过的输入。
因此,使用next()
基本上只读取第一个单词,只使用第一个令牌(字符串)(其余内容存储在缓冲区中,但是nextLine()
允许您读取直到按下回车键=整行。
如果您尝试按照以下代码片段并尝试将单词和句子组合在一起,就会发现差异:
Scanner sc = new Scanner(System.in);
System.out.println("first input:");
String tmp = sc.next();
System.out.println("tmp: '" + tmp +"'");
System.out.println("second input:");
tmp = sc.next() + sc.nextLine();
System.out.println("2nd tmp: '" + tmp +"'");
}
输入和输出:
first input:
firstWord
tmp: 'firstWord'
second input:
second sentence
2nd tmp: 'second sentence'
//-------------
first input:
first sentencemorewords
tmp: 'first'
second input:
2nd tmp: 'sentencemorewords'
直接打印可能会带来更好的解释:
Scanner sc = new Scanner(System.in);
System.out.println("first input:");
String tmp = sc.next();
System.out.println("tmp: '" + tmp +"'");
System.out.println("second input:");
System.out.println("next: " + sc.next() +",... nextLine: " + sc.nextLine());
请注意,只有第一个单词由第一个
处理sc.next()
处理,如果有更多单词,则其他任何一个单词将由第二个sc.next()
处理,但是如果有两个以上的单词,其余字符串将被处理由nextLine
first input:
first second third more words
tmp: 'first'
second input:
next: second,... nextLine: third more words
因此,在您的程序中如果只需要一个单词,请使用
sc.next()
,如果需要阅读整行,请使用nextLine()