Java 從控制檯讀入一個動態字符串數組

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章