使用扫描仪,如何收集我输入的所有输入?

时间:2017-04-28 02:58:30

标签: java java.util.scanner

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的完整输入内容?

2 个答案:

答案 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;
}