我需要做一个分配,我必须编写一个带有以下条件的while循环:
}
我对“不是流的一部分”感到困惑。当控制台中没有整数输入时,如何使其停止读取?输入方式如下:1 2 3 4 5 6 7 8 9。 我正在使用Scanner类,我的代码是这样的:
Scanner myScanner = new Scanner(System.in);
int inputValue = userInput.nextInt();
while(not end of stream) {
if (.......) {
....
} else {
....
}
}
谢谢!
答案 0 :(得分:1)
请不要让 stream 这个词让您感到困惑,在从System.in阅读时,没有连续的流量'数字来了..用户可以输入他想要的东西,只要他愿意。直到他点击进入'什么都不会发生。
那就是说,情景更像是这样:
1 用户类型71 2 30 5 1
并点击 Enter
2 userInput.nextInt();
会返回它找到的第一个int 71
3 现在您可以这样做: [已编辑]
public static void main(String[] args) {
System.out.print(">");
Scanner userInput = new Scanner(System.in);
int inputValue = userInput.nextInt();
while (userInput.hasNextInt()) {
System.out.println("you just wrote: " + userInput.nextInt());
}
userInput.close();
}
因此,直到扫描仪找不到任何不是int
的输入,循环才会继续。换句话说,当用户键入例如' b'循环终止。
现在一切都取决于你在while-loop
中必须做些什么。您可以测试userInput.hasNext()
以查看是否有,或userInput.nextLine()
等待Enter
..或者您需要的任何内容。
当我运行上述主广告并输入时:[ 1 输入 2 输入 3 输入 4 输入 a 输入],这是输出:
>1 // <-- this is the number before the while loop
2 // <-- now another number
you just wrote: 2 // <-- and the while loop makes its first iteration
3 // <-- then it waits for you to input the 3rd number
you just wrote: 3 // <-- to make its next iteration
4 // <-- and the 4th
you just wrote: 4 // <-- 4th iteration
a // <-- until you type something else
// end of program
用户始终必须按 Enter - 否则操作系统不会将输入的输入提供给Java程序。这与操作系统为Java程序运行提供的Shell / Console设置有关。因此,在您点击输入之前,Java不会看到任何输入。