从文件加载2D数组

时间:2014-07-15 03:28:21

标签: 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  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++; 
            }

我知道这是不完整的,但这就是我到目前为止所做的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

但是如果你坚持使用Arrays(也许这是你的分配要求),那么在开始使用之前你需要知道你想要的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数组的更多信息,我建议您查看此Syntax for creating a two-dimensional array