要求描述:今天刷题的时候,需要从控制台读入一个int型的动态数组到Vector中存储,如输入1 2 3 4 5。
想都没想,于是便有了下面的代码。
Scanner sc = new Scanner(System.in);
Vector<Integer> list = new Vector<>();
while (sc.hasNextInt()) { // 判断是否结束
int s = sc.nextInt();// 读入整数
list.add(s);
}
for(int e : list){
System.out.println(e);
}
不过问题马上来了,因为while 循环是跳不出去的,所以一直会循环着,这样我就没办法进行后续的操作。
解决办法:
某些刷题的编译器,上面的代码的while循环是可以跳出去的,所以,如果编译器允许的话。就没关系了。如果不允许的话,可以尝试下面的代码:
思路是:作为String读入,再将字符串转换成int数组
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
Vector<Integer> list = new Vector<>();
String s = in.nextLine();
String c[] = s.split(" ");
for (int i = 0; i < c.length; i++) {
// 先由字符串转换成char,再转换成String,然后Integer
int e = Integer.parseInt(String.valueOf(c[i]));
list.add(e);
}
for(int e : list){
System.out.println(e);
}
至于为什么不能跳出循环,这个google上有很好的回答。