Scanner input = new Scanner(System.in);
boolean flag = true;
System.out.print("What is your name? ");
flag = true;
while(flag == true){
name = input.next();
fullName = fullName + " " + name;
if(input.hasNext() == false){
flag = false;
}
}
上面的代码只是我整个程序的一个示例,但这部分代码是我遇到问题的地方。
使用上面的代码,我输入控制台的输入是"the one"
。问题是input.next()
收集"one"
然后将其添加到fullName
,当代码转到if语句以检查是否有更多输入(没有)时,程序只是挂了。我正在使用BlueJ
并且程序调试器说该线程仍在运行但没有任何进展。我想知道如何使用"the one"
收集Scanner
的完整输入内容?
答案 0 :(得分:3)
我建议您使用
if(!input.hasNext()){
flag = false;
}
而不是使用
if(input.hasNext() == false){
flag = false;
}
答案 1 :(得分:0)
使用name = input.nextLine();
参考:What's the difference between next() and nextLine() methods from Scanner class?
Java doc Scanner
next()从此扫描仪中查找并返回下一个完整的令牌。
nextLine()使此扫描程序超过当前行并返回 跳过的输入。
while (true) {
name = input.nextLine();
if(name.length() == 0){
break;
}
fullName = fullName + " " + name;
}