我正在尝试创建一个在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
答案 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
这样你就不用担心职位了。