需要一点帮助。在我正在编写的程序中,我们应该读取一个名为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++;
}
我知道这是不完整的,但这就是我到目前为止所做的。任何帮助将不胜感激。
答案 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