從我的學位中得到一個項目,我被困在其中一個構造函數上。
Square3x3(int[][] array)
。請注意,給定的數組可能是非對稱的,甚至可能具有不同長度的行。
當且僅當給定數組中的相應單元格不存在時,確保將單元格初始化為 -1。
您可以假設數組不為空。
當給定的數組大於 3x3 時,以下代碼對我有用,但當它小於 3x3 時,我無法使其工作。
請注意,所有這些都需要與main
.
感謝您的幫助。
我得到以下代碼:
public class Square3x3 {
private int[][] Square3x3;
public Square3x3(int[][]array) {
Square3x3 = new int[3][3];
int count =0;
for (int i = 0; i < 3 && i < array.length; i++) {
for (int j = 0; j < 3 && j < array[count].length; j++) {
Square3x3[i][j] = array[i][j];
}
count++;
}
}
}
private int[][] square3x3 = {
{-1, -1, -1},
{-1, -1, -1},
{-1, -1, -1}
};
public Square3x3(int[][] array) {
for (int i = 0, n = Math.min(3, array == null ? -1 : array.length); i < n; i++) {
for(int j = 0, m = Math.min(3, array[i] == null ? -1 : array[i].length); j < m; j++) {
square3x3[i][j] = array[i][j];
}
}
}
因此,如果輸入的維度array
小於 3x3,則在復制值時將使用 -1 的預填充值。
測試:
Square3x3 sq = new Square3x3(new int[3][2]); // input 2D arr initialized with 0
System.out.println(Arrays.deepToString(sq.square3x3));
// jagged input
sq = new Square3x3(new int[][]{{1, 2}, {3}, {4, 5, 6}});
System.out.println(Arrays.deepToString(sq.square3x3));
// input with nulls
mc = new MyClass(new int[][]{{1, 2}, null, {3}});
System.out.println(Arrays.deepToString(mc.square3x3));
輸出:
[[0, 0, -1], [0, 0, -1], [0, 0, -1]]
[[1, 2, -1], [3, -1, -1], [4, 5, 6]]
[[1, 2, -1], [-1, -1, -1], [3, -1, -1]]
為了解決當且僅當給定數組中的相應單元格不存在時將單元格設置為 -1 的有點異想天開的要求,可以提供以下實現:
private int[][] square3x3;
public Square3x3(int[][] array) {
square3x3 = new int[3][3]; // anyway an array filled with 0 is created
for (int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
square3x3[i][j] = null != array && i < array.length
&& null != array[i] && j < array[i].length
? array[i][j] : -1;
}
}
}
該要求試圖以一種複雜/複雜的方式提供特定的實現,但這與預期的輸出無關,實際上需要遍歷循環中的所有 3x3 單元,而通過適當的初始化可以實現完全相同,並且可以跳過不相關的行/列.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句