我有一个由名为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循环?我该如何解决?提前谢谢。
答案 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