對 Java 來說很陌生,所以不確定如何創建一個以 for-loop 陣列為元素的 3D 陣列:
public class Test {
public static void main(String[] args) {
int ASize = 20;
int[][] loc = new int[5][5];
for(int size = 0,xy = ASize/2; size < 5; size ,xy = ASize) {
for(int size2 = 0,xy2 = ASize/2; size2 < 5; size2 ,xy2 = ASize) {
loc[size][size2] = xy;
}
}
}
}
正在嘗試使用 [xy,xy2] 形式的元素陣列創建一個 3D 陣列,但無法找出正確的表達方式。假設變數 xy 和 xy2 都隨著 for 回圈遞增ASize20,初始值為ASize/2. 預期的輸出陣列應該是:
[10,10] [30,10] [50,10] [70,10] [90,10]
[10,30] [30,30] [50,30] [70,30] [90,30]
[10,50] [30,50] [50,50] [70,50] [90,50]
[10,70] [30,70] [50,70] [70,70] [90,70]
[10,90] [30,90] [50,90] [70,90] [90,90]
那么,為了創建這種具有遞增元素陣列的 3D 陣列,撰寫 for 回圈的正確方法是什么?
uj5u.com熱心網友回復:
這是一種方法。它是一個“3D”陣列。對于一個陣列[R][C][Other]
- 第一級
R是行數。 - 第二個是
C列數。 - 第三個是每個
[r][c]單元格中陣列的大小。
int ASize = 20;
int[][][] loc = new int[5][5][2];
for (int size = 0, xy = ASize / 2; size < 5;
size , xy = ASize) {
for (int size2 = 0, xy2 = ASize / 2; size2 < 5;
size2 , xy2 = ASize) {
loc[size][size2][0] = xy2;
loc[size][size2][1] = xy;
}
}
for (int[][] arr : loc) {
System.out.println(Arrays.deepToString(arr));
}
印刷
[[10, 10], [30, 10], [50, 10], [70, 10], [90, 10]]
[[10, 30], [30, 30], [50, 30], [70, 30], [90, 30]]
[[10, 50], [30, 50], [50, 50], [70, 50], [90, 50]]
[[10, 70], [30, 70], [50, 70], [70, 70], [90, 70]]
[[10, 90], [30, 90], [50, 90], [70, 90], [90, 90]]
列印如下。
- Java 中的多維實際上是陣列的陣列。
- 所以回圈遍歷每一行(這是一個
[5][2]陣列)并使用列印每一行Arrays.deepToString() Arrays.toString()通常用于列印陣列,但僅用于第一級。
uj5u.com熱心網友回復:
[]在定義嵌套陣列時,您必須為每一級嵌套使用一對方括號。對于“3d”陣列,它將是[][][].
請注意,Java 中實際上沒有“2d”或“3d”陣列。我們可以創建一個嵌套陣列,即一個包含其他陣列的陣列。
創建嵌套陣列時,只需要提供外部(封閉)陣列的長度。并且您可以省略宣告內部陣列的大小,這在內部陣列的長度可能不同時很有用。
即這個宣告也將是有效的:
int[][][] loc = new int[5][][];
您需要注意的關于陣列的另一件重要事情是,盡管它們是物件并從Object類繼承所有行為,但陣列沒有自己的類。因此,如果您在陣列上呼叫和toString(),則將呼叫該類的默認實作。因此,嘗試列印陣列將導致控制臺上出現奇怪的符號。hasCode()equals()Object
因此,Arrays如果您的朋友需要列印或比較陣列,請使用實用程式類。
public static void main(String[] args) {
int[][][] loc = new int[5][5][2];
for (int row = 0; row < loc.length; row ) {
for (int col = 0; col < loc[row].length; col ) {
loc[row][col][0] = (1 2 * row) * 10;
loc[row][col][1] = (1 2 * col) * 10;
}
}
print3DArray(loc);
}
public static void print3DArray(int[][][] arr) {
for (int row = 0; row < arr.length; row ) {
for (int col = 0; col < arr[row].length; col ) {
System.out.print(Arrays.toString(arr[row][col]) " ");
}
System.out.println();
}
}
輸出:
[10, 10] [10, 30] [10, 50] [10, 70] [10, 90]
[30, 10] [30, 30] [30, 50] [30, 70] [30, 90]
[50, 10] [50, 30] [50, 50] [50, 70] [50, 90]
[70, 10] [70, 30] [70, 50] [70, 70] [70, 90]
[90, 10] [90, 30] [90, 50] [90, 70] [90, 90]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/481912.html
上一篇:如何比較陣列中的某些字符?
下一篇:有沒有辦法給文本背景顏色
