【发布时间】:2014-03-23 04:29:35
【问题描述】:
编辑:我已经解决了这个问题。我没有正确读取文件顶部的第二个数字,所以我得到了一个方形数组。我通过使用scanner.next() 跳过第一个数字来解决它。我将在下面发布更正的代码。感谢大家的帮助。
我正在尝试学习文件 i/o,并且该项目已让您读取了您创建的文件。该文件以两个数字开头,即班级中的学生人数和要评分的项目数,然后是一个以姓名开头的大矩阵,然后是要平均的分数。像这样的:
2 3
约翰 44.4 55 66.1
丽莎 33 44 55
完全纠正的方法(尽管仍然需要对异常处理进行微调):
public static double[][] getArrays(String fileName, int num1, int num2) {
double[][] twoDArray = new double[num1][num2];
String[] names = new String[num1];
try {
Scanner fileReader = new Scanner(new File(fileName)); //Create a scanner
fileReader.nextLine();
do {
for (int i = 0; i < num1; i++) {
names[i] = fileReader.next();
System.out.println(names[i]);
for (int j = 0; j < twoDArray[0].length; j++) {
twoDArray[i][j] = fileReader.nextDouble();
}
fileReader.nextLine();
}
} while (fileReader.hasNext());
} catch (FileNotFoundException | NoSuchElementException ex) { //Catch any exceptions
System.out.println("Exception caught");
}
return twoDArray;
}// end of get2DArray method
【问题讨论】:
-
您的项目是否需要使用二维数组?
-
是的,你是对的。这是因为字符串的存在。你通过调用 fileReader.next(); 来遍历它;
-
@mig 是的,它说您应该使用二维数组以及任何其他必要的数组。
-
@Sourabh 我尝试了放置 fileReader.next() 但我仍然得到零。我应该使用多个吗?
-
@user3397166 我把我的例子放在下面
标签: java arrays java.util.scanner