2016-05-11 33 views
0

在轉移到下一行之前,我怎樣才能讀取一行整數?從不同的行讀入(從std in)整數/整數列表Java

我收到象下面輸入(忽略子彈分):

  • 4 -space- - 空間 - 2 - 空間 - - 空間 - - 空間 - 3
  • -space- 84 -space -space- 6
  • 2 -space- -space- -space- 8 -space- -space- 19

其中用於我想在僅行執行操作的整數的每一行。然後我想要獲得下一行並在那個上執行操作等等。

我不知道數字之間有多少空格,我目前正在使用Java的掃描器。

+0

你的意思是隻讀直到整數? –

回答

1

可能有更好的方法,一種可能的方式是將整行讀取爲單個字符串,然後將每個字符串拆分爲空格。這些將是字符串,但您必須將其更改爲整數。

Scanner scanner = new Scanner(System.in); 
String str = scanner.nextLine(); 
String[] splitStr = str.split(" "); 

for(String s: splitStr) 
    System.out.println(s); 
+0

謝謝!我用過這個,我的程序正在工作:) – redpanda12

0

我會做這與nextLine()功能和StringTokenizer對象,具有一個ArrayList<Integer[]>沿着存儲文本的行:

Scanner sc = new Scanner(/*input source*/); 
StringTokenizer input; 
ArrayList<Integer[]> numbers = new ArrayList<>(); 

try { 
    while (sc.hasNextLine()) { 
     input = new StringTokenizer(sc.nextLine()); 
     Integer[] n = new Integer[input.countTokens()]; 
     for (int i=0; i<n.length; i++) { 
      n[x] = new Integer(input.nextToken()); 
     } 
     numbers.add(n); 
    } 
} catch (NumberFormatException ex) { 
    // do whatever you want here to handle non-integer input 
} 

這將每個單獨的線轉換成一個單獨的Integer陣列,每個陣列都存儲在ArrayList中。或者,您可以使用ArrayList<String>並解析代碼中其他位置的整數值。

另外,關於while (sc.hasNextLine())零件的註釋,如果您的Scanner正在從System.in讀取,則不應使用此註釋,因爲這會導致無限循環。如果您的Scanner正在從System.in讀取,您應該a)讓用戶輸入一個特定命令來終止循環,或者b)使用for循環,以便輸入固定數量的輸入線。