Java从键盘获取输入(不知道输入个数) | 您所在的位置:网站首页 › java中如何输入字符 › Java从键盘获取输入(不知道输入个数) |
问题
最近在使用Scanner类中的hasNest()方法进行键盘输入时,发现while循环老是停在那儿,等待输入,而不执行后面的语句。 比如这样一段代码: import java.util.ArrayList; import java.util.Scanner; public class blogTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); ArrayList list = new ArrayList(); while(in.hasNext()) { int a = in.nextInt(); list.add(a); } System.out.println(list); } }键盘输入,死循环,无法结束: 现在解释下原因: hasNext()这个方法是如果此扫描器的输入中有另一个标记,则返回 true。在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。所以循环会一直下去。 此情况可以设置一个终止符,调用hasNext()的重载方法hasNext(String patten):如果下一个标记与从指定字符串构造的模式匹配,则返回 true。扫描器不执行任何输入。 解决方式:需要指定结束符号 1 例:以输入"0",结束输出 //例:以输入"0",结束输出 Scanner sc = new Scanner(System.in); while (!sc.hasNext("0")) { System.out.println(sc.next()); }2 以输入"quit",结束输出 import java.util.Scanner; public class day01 { public static void main(String[] args){ System.out.print("请输入值:"); Scanner s = new Scanner(System.in); while(s.hasNext()){ String a = s.next(); //将s.next()赋值给变量a if("quit".equals(a)){ break; }else{ System.out.println(a); } } } }3 以输入"按回车键输入空行",结束输出 import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class InputTest { public static void main(String[] args) { // TODO Auto-generated method stub // 输入分割为一个一个输入(不知道个数) // 按回车键输入空行结束 Scanner scanner = new Scanner(System.in); ArrayList list = new ArrayList(); do{ String str = scanner.nextLine(); if(str.equals("")){ break; } list.add(Integer.valueOf(str)); }while(true); //System.out.println(list); System.out.println(Arrays.toString(list.toArray())); } }4 输入风格为一行(不知道个数),以空格分隔 // 输入风格为一行(不知道个数) public static void main(String[] args){ Scanner sc = new Scanner(System.in); String inputString = sc.nextLine(); String stringArray[] = inputString.split(" "); int num[] = new int[stringArray.length]; for (int i = 0; i < stringArray.length; i++) { num[i] = Integer.parseInt(stringArray[i]); } for (int i = 0; i < stringArray.length; i++) { System.out.println(num[i]); } }整理这篇博客是因为:做过好几道笔试题都卡在处理输入上,特别是一个一个输入,且不知到个数的情况,题目给的测试用例一般不会指定结束符号,所以,目前还在找一个一个从键盘输入的情况下,不用指定结束符号的解决办法。 |
CopyRight 2018-2019 实验室设备网 版权所有 |