0

我必须在其中存储一个String 矩阵(3x20)arraylength可能会有所不同。我正在尝试以下代码,但出现incompatible types错误。

我该如何解决这个错误?

我的代码是:

int x=0;    
String[] arrayF=new String[10];    
arrayF[x]= new String[3][20];
4

4 回答 4

1

您不能以这种方式分配数组。您最终应该将第一个 2 数组的每个元素分配给 1 维数组。

就像是:

String[][] array2D =new String[M][N];
String[] array1D = new String[M * N];

for (int i = 0 ; i < M ; i++)
{
    for (int j = 0 ; i < N ; i++)
    {
         array1D[(j * N) + i] = array2D[i][j];
    }

}
于 2012-08-18T09:08:17.380 回答
0

arrayF是一个字符串数组,因此其中的每个元素都arrayF必须是一个字符串(根据数组的定义)。
您要做的是new String[3][20]在 的每个元素中放置一个数组()而不是字符串,arrayF这显然与其定义相矛盾(因此出现incompatible types错误)。
您想要的一种解决方案可能是使用 3-d 字符串数组:

String[][][] arr = new String[10][3][20];
于 2012-08-18T09:17:26.390 回答
0

arrayF 是 String 类型的一维数组。您不能将二维数组添加到 arrayF。对于动态数组大小,您应该使用 ArrayList。

List<String[][]> main = new ArrayList<String[][]>();

String[][] child1 = new String[3][20];
String[][] child2 = new String[3][20];
main.add(child1);
main.add(child2);

请参阅 Java 中的可变长度(动态)数组

于 2012-08-18T09:19:39.463 回答
0

使用这样的东西:

String [][] strArr = new String[3][20];
ArrayList<String[][]> tm = new ArrayList<String[][]>();
tm.add(strArr);
于 2012-08-18T09:19:58.980 回答