0
我有一個陣列INT [3] [3]與該初始位置:爪哇複製陣列 - 參考
(A)
block[0][0] = 1;
block[0][1] = 1;
block[0][2] = 1;
block[1][0] = 1;
block[1][1] = 1;
block[1][2] = 1;
block[2][0] = 1;
block[2][1] = 0;
block[2][2] = 1;
//Visually
1 1 1
1 1 1
1 0 1
我有取 「0」 元件的方法和與上部元件改變,所以下一狀態是:
(B)
1 1 1
1 0 1
1 1 1
但問題是,我想創建一個新的數組(所謂AUX)這個位置,不要因爲超越控制框陣列(A)
這裏是我的代碼:
//Creating array B
int[][] aux = new int[3][3];
aux = block; //load the values of original array
aux[line][row] = aux[line-1][row];
aux[line-1][row] = 0;
但是當我檢查輸出中,我也覆蓋了原來的陣列(塊)。
所以我有數組BLOCK和具有相同值的數組AUX,並且不保留數組BLOCK與原始數據。
============================================== =============================
編輯:
我試圖用克隆和copyOf功能,但結果也影響了原始數組。 這裏是我的代碼:
System.out.println("INITIAL BLOCK VALUES");
System.out.println(
bloco[0][0] +""+
bloco[0][1] +""+
bloco[0][2] +
"\n"+
bloco[1][0]+
bloco[1][1]+
bloco[1][2]+
"\n"+
bloco[2][0] +
bloco[2][1] +
bloco[2][2]
);
//Cloning original array to a new one
int[][] aux = bloco.clone();
//Here what I'm doing is changing the first element of AUX, just for test
aux[0][0] = 9;
// Block array shouldnt be affected! Lets check it out:
System.out.println("FINAL BLOCK VALUES");
System.out.println(
bloco[0][0] +""+
bloco[0][1] +""+
bloco[0][2] +
"\n"+
bloco[1][0]+
bloco[1][1]+
bloco[1][2]+
"\n"+
bloco[2][0] +
bloco[2][1] +
bloco[2][2]
);
而且OUPUT是:
INITIAL BLOCK VALUES
111
111
101
FINAL BLOCK VALUES
911
111
101
有什麼想法?
OBS:此代碼是一個被稱爲「節點」類構造器是一個函數內部:
public Nodo(int[][] blocos)
{
this.bloco = blocos;
}
請參考這個問題: http://stackoverflow.com/questions/2371568/copying-array-by-value-in-java –
檢查此 - http://stackoverflow.com/questions/5785745/make-copy-of-array-java – hellboy
@KangLi我剛剛編輯了這個問題,我仍然有問題= /有什麼想法? – user2294899