2016-09-30 32 views
0

我想讀例如m*n矩陣:如何閱讀整數的每一行分別

2 1 5; 
3 1 3 1; 
1 2; 

我想,以紀念所有的數量下降,例如,現在的數字被標記爲1,2, 3,5

由於我需要確保行= m的輸入,我想分別讀取每一行。

這裏是我的代碼,但它讀取所有數到同一個列表,所以我不能確保只有m條行:

Scanner sc = new Scanner (System.in); 
List<Integer> list = new ArrayList<Integer>();      
while (sc.hasNextInt()) 
    list.add(sc.nextInt()); 
+0

完成讀取輸入後,您可以將列表分割成n行m個元素。否則,您應該將列表中的數據結構更改爲不同的內容。 – mazaneicha

回答

0

解析數字之前,您可以先提取每個行基於所述分離器:

Scanner lineScanner = 
      new Scanner(System.in) 
      .useDelimiter(";"); 

然後,讀每一行到它自己的陣列:

List<List<Integer>> lines = new ArrayList<>(); 

while(lineScanner.hasNext()) { 
    List<Integer> newLine = new ArrayList<>(); 
    Scanner rawLine = new Scanner(lineScanner.next()); 
    while(rawLine.hasNextInt()) { 
     newLine.add(rawLine.nextInt()); 
    } 
    lines.add(newLine); 
} 

隨着您的輸入,System.out.println(lines)產量:

[[2, 1, 5], [3, 1, 3, 1], [1, 2]] 

從那裏,你可以很容易檢查你想在每行基礎上不管。

+0

Hi @Shastick你知道如何停止閱讀輸入和打印輸出的掃描儀嗎? – Pelican

+0

'Ctrl-D'適合我。或者,您可以先執行一些操作,比如'String input = new Scanner(System.in).nextLine()。',然後使用'input'代替上面的System.in。只要你在寫完這行之後點擊'enter',這些東西就能正常工作。 – Shastick