Java 从文件加载二维数组

Java 从文件加载二维数组,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我需要一点帮助。在我正在编写的程序中,我们应该读入一个名为prog2.dat的文本文件,其内容表示10名员工的工作时间。下面是该文件的外观 10 8 4 7 3 8 6 3 2 7 6 3 5 2 1 1 2 3 8 6 4 4 3 2 8 8 8 5 1 4 3 2 1 3 8 6 8 5 6 7 5 5 4 1 8 7 4 2 8 6 1 5 4 6 5 3 3 4 3 2

我需要一点帮助。在我正在编写的程序中,我们应该读入一个名为prog2.dat的文本文件,其内容表示10名员工的工作时间。下面是该文件的外观

10
8  4  7  3  8  6  3 
2  7  6  3  5  2  1  
1  2  3  8  6  4  4 
3  2  8  8  8  5  1 
4  3  2  1  3  8  6 
8  5  6  7  5  5  4 
1  8  7  4  2  8  6 
1  5  4  6  5  3  3
4  3  2  1  2  3  4
1  8  7  6  5  6  5
当文件被读入时,它将被存储在2D数组中,这就是我遇到的问题。我对2D阵列的经验非常少,而且我以前从未从文件中加载过一个阵列

这并不是课程的结束,但其他的一切都是我知道如何去做的,这不应该是一个问题,它只是达到了这一点

这是我到目前为止的代码

import java.util.Scanner;

public class Program2 {
    public static void main(String[] args) {
        int[][] hoursArray = new int[i][j];
        int employeeNum;
        int i = 0;
        int j = 0;
        java.io.File file = new java.io.File("../instr/prog2.dat");
        Scanner fin = new Scanner(file);
             employeeNum = fin.nextInt();
             while (fin.hasNextLine && i < hoursArray.length) {
                hoursArray[i] = fin.nextInt();
                i++; 
            }
import java.util.Scanner;
公共课程2{
公共静态void main(字符串[]args){
int[][]hoursArray=新的int[i][j];
国际雇员协会;
int i=0;
int j=0;
java.io.File File=new java.io.File(“../instr/prog2.dat”);
扫描仪fin=新扫描仪(文件);
employeeNum=fin.nextin();
while(fin.hasNextLine&&i

我知道这是不完整的,但这就是我目前所拥有的。任何帮助都将不胜感激。

通过使用java.util.List,您不必担心事先知道大小(长度)。您始终可以使用List.toArray(Integer[])转换回数组

但是如果你坚持使用数组(可能这是你的任务要求),那么你需要知道你想要的2d数组的维度,然后才能开始使用它。正如第一行告诉你的那样,你知道有多少员工。你知道每个员工一周7天的数字是7。(我假设这是你的任务要求。)那么你

Integer[][] hoursArray = new Integer[employeeNum][7];
然后你将依次读取每个数字。我建议你保留两个计数器,eId表示员工id,d表示日期。两个计数器都初始化为0。然后每次读取一个数字后,d将递增1,直到d等于7,然后d重置回0,eId将递增1。因此,现在可以这样读取该数字时将其放入数组中

hoursArray[eId][d] = fin.nextInt();
当然,您仍然需要处理任何输入错误,但我现在把它留给您


要了解java中2d数组的更多信息,我建议您看看这个

您有
hoursArray[I]
,但它是一个2d数组。您需要类似
hoursArray[I][j]的东西
。您还应该描述什么不起作用,或者发布您收到的任何错误/异常。好吧,这是我想知道的一件事。我对如何循环感到困惑。我发现了一个大约一年前编写的旧程序,从一个文件加载一个常规的一维数组,这就是我模拟while循环的方式,但我不确定如何使其适用于2D数组?请在纸上一步一步地写出来,看看您实际需要做什么。从那里您可以将这些步骤转换为代码。例如,对于嵌套在彼此内部的循环,例如
for(int i=0;i<10;i++){for(int j=0;j<10;j++){}
。另外,在创建
i
j
之前,使用变量
i
j
进行2d数组声明。这将是一个问题。好的,谢谢。我几乎把所有内容都写在纸上了,就像我说的,我以前从未真正使用过这种类型的东西。谢谢,我会解决这个问题的,我的教授希望我们把一切都列在最上面,但如果这会把事情搞砸的话,他就必须克服它。哈哈。再次感谢。我不会使用
fin.nextInt()<代码> >读取数据。问题是<代码>扫描器在使用<代码> NExtTeN/COD>时不关心新行,因此它看起来像是一个大的数字序列。但是您关心的是新行,因为您将输入作为2D数组来处理。请考虑使用<代码> NestRe线()。
阅读每一行,然后为每一行创建一个新的
扫描仪
,将该行扫描为
字符串
(是的,您可以从
字符串
创建一个
扫描仪
。请参阅)。谢谢,这很有意义。如果您不介意的话,请让我确保我写的正确(int-eid=0;eid