2013-05-01 46 views
-2

我有一些問題,理解Java需要語法上的程序來工作。該程序應該讀取輸入文件,然後打印出其內容。一旦我這樣做,我就會知道如何操作它的內容。開始Java:如何將輸入文件傳遞到二維數組

例如,我輸入文件可能是這個樣子:

1 2 3 
4 5 6 
7 8 9 

這是我的代碼:

import java.util.Scanner; 
import java.io.*; 

public class stats1 { 

public static void main(String[] args) throws IOException { 

Scanner s = new Scanner(new File("numbers.tex")); 
int[][] numbers = new int[s.nextInt()][s.nextInt()]; 
for (int row = 0; row < numbers.length; row++) 
    for(int col =0; col < numbers[row].length; col++) 
     numbers[row][col]=s.nextInt(); 
     System.out.print(numbers[row][col] + " "); 
    } 

} 
+0

那麼,它不起作用?它給錯誤?什麼是問題? – sashkello 2013-05-01 06:18:31

+1

看看代碼,我已經可以發現第二個for循環需要一個括號。 for(col ..){//數字和系統輸出語句} – 2013-05-01 06:19:34

+0

+1 to @JeremyUnruh。 **總是**在塊上使用大括號,即使它們只包含一條指令。更一致,更容易閱讀,並且沒有機會發現錯誤。 – 2013-05-01 06:21:10

回答

1

你需要一個{}第二循環之後:

for (int row = 0; row < numbers.length; row++) 
    for(int col =0; col < numbers[row].length; col++) { 
     numbers[row][col]=s.nextInt(); 
     System.out.print(numbers[row][col] + " "); 
    } 

我建議你也在外環上使用大括號,以防止將來出現這種錯誤。

注意,在你的情況,numbers.length爲1和numbers[row].length將2.(既然你聲明和定義使用nextInt您的陣列歷時1和2的文件。

然後,你的循環將只運行因此你的輸出將是3,4

我建議你在第一行放置矩陣的維度,並且爲了看到「矩陣形狀」,你需要打印一個空的內循環結束後的行數

或者,您可以先計算行和列,這樣你就不需要在第一行添加維度。