Java扫描程序输入循环

时间:2013-10-20 20:47:00

标签: java java.util.scanner

我有一个由名为running的变量控制的循环,它告诉程序是否正在运行。我正在尝试实现一个用户输入命令的循环,并且程序正在回答他,但由于某种原因,如果我的字符串分裂,如果它有多个单词,这就是我试过的:

import java.util.Scanner;
public class ScannerTest{
    private boolean running = true;
    public ScannerTest(){
        Scanner s = new Scanner(System.in);
        while(running){
           String command = s.next();
           System.out.println(command);
        }
    }
}

如果我在扫描仪中输入两个或更多单词,它似乎会拆分它们。

Input  >> Hello what's your name?
Output >> Hello
       >> what's
       >> your
       >> name?

也许是因为While循环?我该如何解决?提前谢谢。

4 个答案:

答案 0 :(得分:4)

Scanner#next()就是这样做的 - 它抓住了任何空白分隔符定义的下一个标记,但没有得到下一行。如果您的单词之间有空格,则每次调用该方法时,它将一次抓取一个单词。

如果您想获取用户输入的完整行,请使用Scanner#nextLine()

编辑:此问题必须与此网站上的其他地方重复。

答案 1 :(得分:0)

next()方法将按空格分隔符分割您的输入。

nextLine()方法可以解决您的问题。 nextLine();将立即读取整行。

String command = s.next();替换为String command = s.nextLine();

答案 2 :(得分:0)

你正在使用

System.out.println();

只需使用

System.out.print();

如果您希望将下一个输出/输入输入到下一行,则仅使用println。

答案 3 :(得分:0)

为什么不使用end-of-file indicator,您在解决方案中使用的循环称为sentinel-controlled repetition我认为控制它的更好价值是使用end-of-file indicator看看在我的回答java Scanner.hasNext() usage