2017-02-10 65 views
-1
while(sc.hasNextInt()){         
    int i = sc.nextInt(); 
    innerArr.add(i);   
} 

我有一個名爲「sc」的掃描儀,它接受輸入。我希望能夠輸入「1 2 3 4 5」,然後輸入「Enter」。這將讓我的代碼脫離while循環並繼承下面的其他代碼。然而,當i型「1 2 3 4 5」和「輸入」,我的代碼不中斷循環的。只有當我輸入「1 2 3 4 5 a」之類的東西時纔會發生。我該如何解決?從掃描儀讀取值,直到我點擊輸入

+1

你可以[在一行讀](http://docs.oracle.com/javase /7/docs/api/java/util/Scanner.html#nextLine())從您的掃描儀,然後按[SPLIT](https://docs.oracle.com/javase/7/docs/api/java/lang/ String.html#split(java.lang.String))它。 – khelwood

回答

0

由於hasNextInt()nextInt()隱藏你的分隔符(這是什麼Scanner應該做的),你的代碼將無法告訴最終用戶按下輸入與數字之間的空間之間的差異。

但是,你可以閱讀nextLine(),並將其轉換成的int秒的陣列一氣呵成:

var line = sc.nextLine(); 
int[] innerArr = Arrays.stream(line.split(" ")).mapToInt(Integer::parseInt).toArray();