要求描述:今天刷題的時候,需要從控制檯讀入一個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上有很好的回答。