Java入门:如何将输入文件传递到2D数组

Java入门:如何将输入文件传递到2D数组,java,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 { Sca

我在理解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] + " ");
  } 

}
import java.util.Scanner;
导入java.io.*;
公营班级1{
公共静态void main(字符串[]args)引发IOException{
扫描仪s=新扫描仪(新文件(“numbers.tex”);
int[][]数字=新int[s.nextInt()][s.nextInt()];
for(int row=0;row
在第二个循环之后,您需要一个
{
}

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] + " ");
    }
for(int row=0;row
我建议您在外循环周围也使用大括号,以防止将来出现此类错误

请注意,在本例中,
numbers.length
将为1,
numbers[row]。length
将为2。(因为您使用
nextInt
声明并定义了数组,它从文件中获取了1和2

然后,您的循环将只在3和4上运行。因此,您的输出将是3,4

我建议你把矩阵的尺寸放在第一行。为了看到“矩阵形状”,你需要在内环完成后打印一条空行


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

那么?它不起作用?它会出错?问题是什么?查看代码,我已经发现第二个for循环中需要一个括号。for(col..){//numbers and system out statement}+1到@Jeremyyunruh。始终在块周围使用大括号,即使它们只包含一条指令。更一致、更易于阅读,并且不会出现错误。我用括号修复了它,但它不会读取所有数字。第一行是否包含2D数组的预期大小?或者,在读取整个文件之前,您不会知道它?