[英]Creating a multi-dimensional String array from a method array parameter
我正在嘗試解決一個半困難的問題,其中我試圖創建一個數組並根據碰巧是2維int數組的參數返回3維數組。 我嘗試返回的數組是3維的String數組。 所以這是代碼:
public class Displaydata {
static String[][][] makeArray(int[][] dimensions) {
String myArray[][][];
for (int i = 0; i < dimensions.length; i++) {
for (int j = 0; j < dimensions[i].length; j++) {
myArray[][][] = new String[i][j][]; //getting error here.
}
}
return myArray;
}
static void printArray(String[][][] a) {
for (int i = 0; i < a.length; i++) {
System.out.println("\nrow_" + i);
for (int j = 0; j < a[i].length; j++) {
System.out.print( "\t");
for (int k = 0; k < a[i][j].length; k++)
System.out.print(a[i][j][k] + " ");
System.out.println();
}
}
}
public static void main(String[] args) {
int [][] dim = new int[5][];
dim[0] = new int[2];
dim[1] = new int[4];
dim[2] = new int[1];
dim[3] = new int[7];
dim[4] = new int[13];
dim[0][0] = 4;
dim[0][1] = 8;
dim[1][0] = 5;
dim[1][1] = 6;
dim[1][2] = 2;
dim[1][3] = 7;
dim[2][0] = 11;
for (int i = 0; i < dim[3].length;i++)
dim[3][i] = 2*i+1;
for (int i = 0; i < dim[4].length;i++)
dim[4][i] = 26- 2*i;
String[][][] threeDee = makeArray(dim);
printArray(threeDee);
}
}
從源代碼中可以看到,嘗試創建要返回的3維數組實例時出現錯誤。 我應該創建一個三維數組,其中頂層行的數量由維度的長度確定,並且對於每個頂層行i,二級行的數量由維度的長度確定[i ]。 頂級行i的第二級行j中的列數由Dimensions [i] [j]的值確定。 每個數組元素的值是其頂級行索引與第二級行索引與列索引的串聯,其中索引用字母表示:“ A”代表0,“ B”代表1,以此類推。當然,只有在索引不超過25時,這才是正確的。)我不一定知道我要去哪里。 謝謝!
我猜你應該將數組初始化為myArray = new String[i][j][]; //getting error here.
myArray = new String[i][j][]; //getting error here.
我認為
myArray[][][] = new String[i][j][]; //getting error here.
應該:
myArray[i][j] = new String[5]; // I have no idea how big you want to go.
然后,您可以像這樣填充最內層數組的每個元素:
myArray[i][j][0] = "first item";
myArray[i][j][1] = "second string";
...
您不應在循環的每次迭代中初始化數組。 在循環外將其初始化一次,然后在循環內進行填充。
static String[][][] makeArray(int[][] dimensions) {
String[][][] myArray = new String[25][25][1];
for (int i = 0; i < dimensions.length; i++) {
for (int j = 0; j < dimensions[i].length; j++) {
myArray[i][j][0] = i + "," + j;
}
}
return myArray;
}
我只是插入了前兩個維度的大小的值,您將需要根據在其中輸入的內容來計算它們。 “ i”值將始終為Dimensions.length,但“ j”值將是從Dimensions [0] .length-> Dimensions [n-1] .length返回的最大值,其中“ n”是其中的元素數第二個維度。
另外,您將需要設置一種將“ i”和“ j”中的數字轉換為字母的方法,也許使用Map。
我認為您應該將該行更改為:
myArray = new String[i][j][]; //look ma! no compiler error
另外,您需要將myArray
初始化為明智的設置(也許為null
?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.