所以,例如,这就是我要问的:你怎么能转换它:
{{0, 1, 2},
{3, 4, 5},
{6, 7, 8},
{9, 0, 1}}
到此:
{{0, 1, 2},
{0, 1, 2},
{0, 1, 2},
{0, 1, 2}}
这是我到目前为止所做的:
void fillDown(int[][] grid) {
int[][] m = {{}};
int[][] newArray = zero(m);
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[0].length; j++) {
if(j== m.length-1){
print(newArray[i][j]);
}else{
print(newArray[i][j] + " ");
}
}
}
}
int[][] zero(int[][] m) {
int rows = m.length;
int columns = m[0].length;
int[][] tempArray = new int[rows][columns];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
tempArray[i][j] = m[i][j];
}
}
return tempArray;
}
但是,当我输入一些值时,它不能按预期工作
例如,当我输入如下内容时:
{{0, 1, 2},
{3, 4, 5},
{6, 7, 8},
{9, 0, 1}}
它仍会返回我输入的内容:
{{0, 1, 2},
{3, 4, 5},
{6, 7, 8},
{9, 0, 1}}
我该怎么做?
答案 0 :(得分:1)
使用嵌套循环。
static void fillDown(int[][] grid) {
for (int i = 1 ; i < grid.length ; i++){
for (int j = 0 ; j < grid[i].length ; j++) {
grid[i][j] = grid[0][j];
}
}
}
或制作原始数组的副本。
static void fillDown(int[][] grid) {
for (int i = 1 ; i < grid.length ; i++){
grid[i] = Arrays.copyOf(grid[0], grid[0].length);
}
}
我不会使用以下方法,因为它只是复制引用,因此对其中一个索引所做的每个更改都会影响所有其他索引。
for (int i = 1 ; i < grid.length ; i++) {
grid[i] = grid[0]; // /!\ NOT A GOOD IDEA
}
答案 1 :(得分:1)
在盯着你的问题后,看起来你正在谈论你的int[][] zero(int[][] m)
方法(如果我错了,请纠正我)。
在int[][] zero(int[][] m)
方法中,替换
tempArray[i][j] = m[i][j];
带
tempArray[i][j] = j;
看起来应该是这样的:
public static int[][] zero(int[][] m) {
int rows = m.length;
int columns = m[0].length;
int[][] tempArray = new int[rows][columns];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
tempArray[i][j] = j;
}
}
return tempArray;
}
运行以下内容:
int[][] array = new int[][]{{0, 1, 2},
{3, 4, 5},
{6, 7, 8},
{9, 0, 1}};
System.out.println("Before:");
for (int[] i : array) {
for (int j : i) {
System.out.print(j + " ");
}
System.out.println();
}
array = zero(array);
System.out.println("After:");
for (int[] i : array) {
for (int j : i) {
System.out.print(j + " ");
}
System.out.println();
}
导致:
run:
Before:
0 1 2
3 4 5
6 7 8
9 0 1
After:
0 1 2
0 1 2
0 1 2
0 1 2
BUILD SUCCESSFUL (total time: 0 seconds)
答案 2 :(得分:0)
实际上只是好奇你为什么要这样做。无论如何,它可以像:
int[][] a = {{0, 1, 2},
{3, 4, 5},
{6, 7, 8},
{9, 0, 1}};
int[] replacewith = Arrays.copyOf( a[0], a[0].length );
for ( int i = 1; i < a.length; i++ )
{
a[i] = replacewith;
}