有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在数组中存储字符串矩阵?

我必须在一个array中存储一个String矩阵(3x20),它的length可能会变化。 我正在尝试下面的代码,但是得到了一个incompatible types错误

如何修复此错误

我的代码是:

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

共 (4) 个答案

  1. # 1 楼答案

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

    String[][][] arr = new String[10][3][20];
    
  2. # 2 楼答案

    arrayF是字符串类型的一维数组。 无法将二维数组添加到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);
    

    Variable length (Dynamic) Arrays in Java

  3. # 3 楼答案

    不能这样分配数组。您最终应该将第一个二维数组的每个元素分配给一维数组

    比如:

    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];
        }
    
    }
    
  4. # 4 楼答案

    使用类似以下内容:

    String [][] strArr = new String[3][20];
    ArrayList<String[][]> tm = new ArrayList<String[][]>();
    tm.add(strArr);