难以将元素添加到二维数组中

时间:2014-05-18 01:13:37

标签: java arrays

我有一个.txt文件,如下所示:

Mathematics:MTH105
Science:SCI205
Computer Science:CPS301
...

我有一项任务,要求我读取文件并将每一行放入一个看起来像这样的数组:

subjectsArray[][] = {
   {"Mathematics", "MTH105"},
   {"Science", "SCI205"},
   {"Computer Science", "CPS301"}
};

当我尝试将文件内容添加到二维数组时出现编译错误:

private static String[][] getFileContents(File file) {

    Scanner scanner = null;
    ArrayList<String[][]> subjectsArray = new ArrayList<String[][]>();

    //Place the contents of the file in an array and return the array
    try {
        scanner = new Scanner(file);
        int i = 0;

        while(scanner.hasNextLine()) {

            String line = scanner.nextLine();
            String[] lineSplit = line.split(":");

            for(int j = 0; j < lineSplit.length; j++) {
                subjectsArray[i][j].add(lineSplit[0]); //The type of the expression must be an array type but it resolved to ArrayList<String[][]>
            }

            i++;
        }
        return subjectsArray;

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } finally {
        scanner.close();
    }
    return null;
}

错误读取:

The type of the expression must be an array type but it resolved to ArrayList<String[][]>

我是多维数组的新手,不知道我做错了什么。有人能告诉我我做错了吗?

2 个答案:

答案 0 :(得分:2)

您的第一个错误是选择结果的类型:此类型

ArrayList<String[][]>

表示三维结构 - 二维阵列列表。你需要的是一个二维结构,例如

ArrayList<String[]>

所以第一个修复是这样的:

List<String[]> subjectsArray = new ArrayList<String[]>(); // Note the type on the left: it's an interface

完成此操作后,其余代码将自行流动:您不需要内部for循环,它将被一行代替:

subjectsArray.add(lineSplit);

最终解决方案是return行:您需要将List<String[]>转换为String[][],这可以通过调用toArray()来完成,如下所示:

return subjectsArray.toArray(new String[subjectsArray.size()][]);

答案 1 :(得分:0)

我认为您正在尝试在String上使用ArrayList方法。我不确定这是可能的。我认为最简单的方法就是:

for(int j = 0; j < lineSplit.length; j++) {
            subjectsArray[i][j]=lineSplit[j]; 
        }