垂直和水平递增 2D 阵列



我正在尝试制作一种方法,其中在main中创建2D数组,可以是任何维度。之后,我们应该创建 2 个方法,一个将数组中的每个下一个值递增一个标记为 step 的给定数字。一种方法应该递增行,另一种方法按列递增。

这是我所拥有的:

public static void main (String [] args){
    int [][] fillRightArray = new int [5][8];
    fillRight(fillRightArray, 2);
    int [][] fillDownArray = new int[5][8];
    fillDown(fillDownArray, -2);

对于填充右方法,这是输出应该是什么:

2 4 6 8 10 12 14 16
18 20 22 24... //all the way to 80, since the array has 40 elements (40*2=80)

这是我的方法:

 public static void fillRight (int [][] fillRightArray, int step){
    for (int i = 0; i< fillRightArray.length; i++){
        for (int j = 0; j< fillRightArray[i].length; j++){
           fillRightArray[i][j] += step*(j+1);

            System.out.print(fillRightArray[i][j] + " ");
        }
        System.out.print("n");
    }

但出于某种原因,我的输出是:

2 4 6 8 10 12 14 16
2 4 6 8 10 12 14 16
2 4 6 8 10 12 14 16
2 4 6 8 10 12 14 16
2 4 6 8 10 12 14 16

知道为什么会这样吗?当我使用 fillDown 方法时也会发生同样的事情,输出应该是:

 2 12 22....
 4 14 24....
 6 16 26....
 8 18 28....
 10 20 30.... all the way to 80

但相反,我得到:

2  2  2  2  2
4  4  4  4  4
6  6  6  6  6
8  8  8  8  8
10 10 10  10  10

您的代码不起作用,因为您没有考虑上一个单元格。

用于确定特定单元格值的逻辑fillRightArray[i][j] += step*(j+1);

此行仅考虑 j 的值来确定数组中单元格的值,而它还应该考虑 i 的值(显式或隐式)。

您应该添加一个计数器来跟踪已设置的单元格数,并根据已设置的单元格数设置下一个单元格值。

您的 fillRight 方法应如下所示:

public static void fillRight (int [][] fillRightArray, int step){
    int count = 0;
    for (int i = 0; i< fillRightArray.length; i++){
       for (int j = 0; j< fillRightArray[i].length; j++){
           count++;
           fillRightArray[i][j] += step*count;
           System.out.print(fillRightArray[i][j] + " ");
       }
       System.out.print("n");
    }
}

你不断地重复相同的工作,每次都回到0。

在你的 fillRight 中,每一行都在执行 2,4,6,8,10,因为你正在执行 step*(j+1),其中 j 在循环的每次迭代后重置为 0。您需要找到一种方法在设置值时包含 i 和 j,或者只是有一个每一步递增的计数变量

喜欢这个:

step += 2
fillRightArray[i][j] = step

这样你就不用担心位置问题了。

最新更新