Java扫描仪-无法读取用户输入
我想阅读用户输入,比如:111213141516Java扫描仪-无法读取用户输入,java,Java,我想阅读用户输入,比如:111213141516 Scanner sc = new Scanner(System.in); while(sc.hasNext()){ System.out.println(sc.next()); } System.out.println("Test"); 但它会退出while循环并打印测试。 我怎样才能读懂输入 您可以中断循环,具体取决于您是否想退出,例如: public static void main(String
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
System.out.println(sc.next());
}
System.out.println("Test");
但它会退出while循环并打印测试。
我怎样才能读懂输入 您可以中断循环,具体取决于您是否想退出,例如:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String next = sc.next();
if (next.equals("q")) { //if user press q then break the loop
break;
}
System.out.println(next);
}
System.out.println("Test");
}
使用api,如:
while(sc.hasNextInt()){
int aba= sc.nextInt();
if (aba == 0) {//or even non numeric value here would let this loop exit
break;
}
}
所以您需要输入0,或者甚至以其他方式输入非数字值,以便退出循环。nextLine方法将只读取整行数据一次,然后您需要对其进行解析,然后将其转换为整数,因此最好使用sc.nextInt,它将为您完成这项工作。该方法的下一步工作如下:
如果它看到文件的结尾,则返回false;
如果它看到另一个有效的非空白输入,则返回true;
如果以上两项都不正确,它将等待用户要输入的下一个输入,直到用户输入后才返回。
通常,如果您使用文件扫描程序,这样的循环将正常工作,因为文件有一个明确的结尾,并且通常不会在等待更多输入时卡住
但是,当您使用console input System.in(未重定向)时,用户通常不会发送文件结束信号。他只需按Return键,然后hasNext就坐,等待用户是否会在下一行输入更多信息,以此类推
处理这一问题有两种一般方法:
用户必须实际终止输入。输入完所有号码并按Return键后,还需要发送文件结尾序列,通常是ctrlD或ctrlZ
如果您这样做,您将无法向该程序输入更多的输入
程序告诉用户输入某个特定值,该值将告诉用户输入结束。例如,字符串DONE。执行此操作时,必须将循环更改为以下内容:
String nextInput;
while( sc.hasNext() && ! (nextInput = sc.next()).equals( "DONE" ) ){
System.out.println(nextInput);
}
你输入后按回车键了吗?是的,我是。。它打印出sc.next,但只是停止,不退出while循环以打印测试如果不使用特定的终止代码,您将无法退出此循环。System.in总是请求更多的输入,因此sc.hasNext总是true。有两件事:变量称为aba,而不是abc:P。您可以添加信息,任何非数字输入也会终止循环。因此,0的检查可能没有必要作为终止条件。@Tom谢谢我修改了它。我同意输入其他非数值,但我认为用不必要的解释来迷惑新手不是个好主意。