2D数组没有正确地遵循row和col维度 - Java

时间:2013-11-07 02:23:24

标签: java arrays 2d

我正在为类创建一个小型java程序,它从文件中获取一个int和double的列表并将它们构建为一个2D数组,然后对该数组进行排序。该文件类似于

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;

}  

任何提示将不胜感激。请注意,我已经确保文件中有足够的双倍数量才能读入5x4等数组。此行只有在行大于col时才会出错(所以4x5工作)。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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,(lenghth是多少行);。

colulmns =行是如何离开的(array [row] .length。

答案 2 :(得分:0)

将循环更改为:

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

应该这样做。