public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(System.in);
int i=0;
int arr[] = new int[10];
while(scan.hasNext()){
arr[i++] = scan.nextInt();
System.out.println("sud");
}
System.out.println("hello");
}
}
如果输入为1 2 3 4 5
,则打印5次。 sud表示循环正在工作但它不会转到System.out.println("hello");
行或超出它。
答案 0 :(得分:1)
由于您正在从System.in
读取数据,因此当您在控制台模式下运行时,hasNext()
会等待您输入更多数据。
为了告诉Scanner
没有更多输入,您需要关闭输入流。在Windows上,它是 Ctrl + Z ,然后是 Enter 。在UNIX上,它是 Ctrl + D 。
如果您将输入放在一个文件中,并将程序重定向到从文件中读取,您的代码也会有效。
注意:您需要保护您的代码免受输入过多数据的用户的侵害。将i < arr.length
添加到循环条件中,否则当最终用户输入第11个数字时,您的代码将以异常停止。
while(i < arr.length && scan.hasNext()) {
...
}
答案 1 :(得分:0)
可能添加一个if语句来检查特定输入以停止输入(打破循环)
while(scan.hasNext()){
String tmp = scan.next();
if (tmp.equals("exit"))
break;
else {
arr[i++] = Integer.parseInt(tmp);
System.out.println("sud");
}
}
System.out.println("hello");
INPUT:
1 2 3 exit
输出:
sud
sud
sud
hello