0

我正在为类创建一个小型 Java 程序,该程序从文件中获取整数列表和双精度数,并将它们构建成二维数组,然后对数组进行排序。该文件将类似于,

4
5
3.00
5.67
4.56
etc

前两个整数作为数组的行和列大小,其余的双精度数填充到数组中。但是当行和列维度是两个不同的数字时,我在让我的程序创建数组时遇到问题,例如 5x4 而不是 4X4。我意识到我一定错过了什么,但我不确定是什么。这是我读取文件并将其构建到数组中的方法:

    public static double[][] readFile(String fileName) throws FileNotFoundException {
    Scanner reader = new Scanner(new FileReader(fileName + ".txt"));
    int row = reader.nextInt();
    int col = reader.nextInt();
    double[][] array = new double[row][col];
    for(int i = 0; i < array.length; i++){
        for(int j = 0; j < array.length; j++){
            array[i][j] = reader.nextDouble();
        }
    }
    return array;

}  

任何提示将不胜感激。请注意,我确保文件中有足够的 double 数量可以读入 5x4 等数组。此外,仅当行大于 col 时才会出错(因此 4x5 有效)。

4

3 回答 3

1

一个明显的错误是在内部循环中,使用array[i].length而不是array.length

for(int j = 0; j < array[i].length; j++){
    array[i][j] = reader.nextDouble();
}
于 2013-11-07T02:26:07.930 回答
0
 But I am having a problem getting my program to create the arrays when the row
 and col dimensions are two different numbers, as in 5x4 rather than 4X4.

您需要在循环中进行细微的更改。

for(int i = 0; i < array.length; i++){
    for(int j = 0; j < array.length; j++){

改成

for(int i = 0; i < array.length; i++){
    for(int j = 0; j < array[row].length; j++){  // notice subtle change

rows= array.length,(长度是多少行);。

colulmns= 行有多长 (array[row].length.

于 2013-11-07T02:25:55.210 回答
0

将您的循环更改为:

for(int i = 0; i < array.length; i++){
    for(int j = 0; j < array[i].length; j++){
        array[i][j] = reader.nextDouble();
    }
}

应该这样做。

于 2013-11-07T02:28:36.653 回答