2013-05-01 62 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

我建议你在第一行放置矩阵的维度,并且为了看到“矩阵形状”,你需要打印一个空的内循环结束后的行数

或者,您可以先计算行和列,这样你就不需要在第一行添加维度。