0

我有一个循环,它由一个名为的变量控制,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

4 回答 4

4

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

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

编辑:这个问题必须与本网站某处的另一个问题重复。

于 2013-10-20T20:48:48.433 回答
0

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

nextLine()方法将解决您的问题。下一条线();将一次读取整行。

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

于 2013-10-20T20:49:17.353 回答
0

你正在使用

System.out.println();

只需使用

System.out.print();

仅当您希望将下一个输出/输入输入到下一行时才使用 println。

于 2015-04-09T22:48:45.787 回答
0

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

于 2017-02-09T08:02:22.367 回答