垂直和水平增加2D阵列?

时间:2017-10-18 17:48:02

标签: java arrays methods increment

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

这就是我所拥有的:

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

2 个答案:

答案 0 :(得分:1)

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

确定特定单元格值的逻辑是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");
    }
}

答案 1 :(得分:0)

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

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

像这样:

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

这样你就不用担心职位了。