Java 从方法数组参数创建多维字符串数组
我试图解决一个半困难的问题,在这个问题中,我试图创建一个数组并返回一个基于参数的三维数组,该参数恰好是一个二维int数组。我试图返回的数组是一个三维字符串数组。下面是代码:Java 从方法数组参数创建多维字符串数组,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我试图解决一个半困难的问题,在这个问题中,我试图创建一个数组并返回一个基于参数的三维数组,该参数恰好是一个二维int数组。我试图返回的数组是一个三维字符串数组。下面是代码: public class Displaydata { static String[][][] makeArray(int[][] dimensions) { String myArray[][][]; for (int i = 0; i < dimensions.lengt
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);
}
}
公共类显示数据{
静态字符串[][]生成数组(int[]维度){
字符串myArray[][];
对于(int i=0;i
正如您从源代码中看到的,当我尝试创建我要返回的三维数组的实例时,我遇到了一个错误。我应该创建一个三维数组,顶级行的数量由维度的长度决定,对于每个顶级行I,第二级行的数量由维度的长度决定[I]。顶级行i的第二级行j中的列数由维度[i][j]的值确定。每个数组元素的值是其顶级行索引与第二级行索引及其列索引的串联,其中索引用字母表示:“A”表示0,“B”表示1等(当然,只有在索引不超过25的情况下才是真的)。我不一定知道哪里出错了。谢谢 我想你应该把这句话改成:
myArray = new String[i][j][]; //look ma! no compiler error
另外,您需要将
myArray
初始化为合理的值(可能null
?)我想您应该将数组初始化为
myArray=newstring[i][j][]//这里出错。
我想
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;
}
静态字符串[][]makeArray(int[]dimensions){
字符串[][]myArray=新字符串[25][25][1];
对于(int i=0;i
我刚刚插入了前两个维度的大小值,您需要根据输入的内容计算它们。“i”值将始终是维度。长度,但“j”值将是从维度[0]返回的最大值。长度->维度[n-1]。长度,其中“n”是第二维度中的元素数
此外,您还需要设置一种将“i”和“j”中的数字转换为字母的方法,可能需要使用地图。“我在……时遇到错误”错误是什么?你能发布堆栈跟踪吗?takendarkk,没有堆栈跟踪,因为程序没有编译。我不知道我做错了什么来阻止编译。如果你有任何积极的见解要分享,请分享。谢谢编译错误是什么?