在Java中访问/创建多维数组

时间:2014-07-25 21:02:32

标签: java arrays netbeans multidimensional-array

我对Java很新,但我正在努力学习。作为个人实验,我正在编写一个计算电影开发过程的计划,与“大规模开发图表”非常类似。对于Android和iPhone,我使用了很多。

遵循以下代码:https://www.youtube.com/watch?v=QeaXXpxNtq0,我有以下代码来读取CSV文件并生成二维数组:

static String xStrPath;
static String[][] myArray;

static void setUpMyCSVArray() {
    myArray = new String[8702][8];

    Scanner scanLn = null;
    int Rowc = 0;
    int Row = 0;
    int Colc = 0;
    int Col = 0;
    String InputLine = "";
    double xnum = 0;
    String xfileLocation;

    xfileLocation = "database.csv";

    System.out.println("\n****** Setup Array ******");

    try {
        scanLn = new Scanner(new BufferedReader(new FileReader(xfileLocation)));

        while (scanLn.hasNextLine()) {
            InputLine = scanLn.nextLine();
            String[] InArray = InputLine.split(",");
            for (int x = 0; x < InArray.length; x++) {
                myArray [Rowc] [x] = InArray[x];

            }
            Rowc++;
        }
    } catch (Exception e) {
        System.out.println(e);
    }

    System.out.println(Arrays.toString(myArray[0]));
}

CSV文件如下所示:

Film Name        Developer    Dilution    ISO/ASA  35mm  120  Sheet  Temperature
Adox CHM 125,    510-Pyro,    1+100,      125,     7,    ,    ,      21C
Adox CHM 125,    510-Pyro,    1+500,      125,     50,   ,    ,      21C
Adox CHM 125,    777,         stock,      100,     12,   ,    ,      24C
Adox CHM 125,    A03,         stock,      125,     6.5,  ,    ,      20C
Adox CHM 125,    ACU-1,       1+10,       100,     9,    ,    ,      21C
Adox CHM 125,    Acufine,     stock,      125,     4,    ,    ,      20C
Adox CHM 125,    Acufine,     stock,      200,     6,    ,    ,      20C
Adox CHM 125,    Acufine,     stock,      320,     5,    ,    ,      21C

当我跑步时:

System.out.println(Arrays.toString(myArray[0]));

输出结果为:

Adox CHM 125,    510-Pyro,    1+100,      125,     7,    ,    ,      21C

但是我无法分离该行的数据,即我想运行

System.out.println(Arrays.toString(myArray[0][0]));

输出:

Adox CHM 125

经过多次尝试后,我对我的代码出了什么问题感到有些困惑,我们非常感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:1)

如果要打印整个 1D数组,则使用Arrays.toString,因为它将数组转换为字符串。如果你想打印出数组的一个元素(如你所指示的那样myArray[0][0]),你只需要这样做:

System.out.println(myArray[0][0]);

不需要Arrays.toString,因为锯齿状数组的元素已经是String

答案 1 :(得分:1)

myArray是一个数组,实际上是一个数组数组。因此myArray[0]是一个数组。您可以在阵列上使用Arrays.toString()

但是myArray[0][0]不是一个数组,而是一个单独的元素。因此,Arrays.toString()无法使用myArray[i][j]。它不会编译。

由于每个元素String都是System.out.println(myArray[0][0]); ,因此您不需要对该元素执行任何其他操作 - 只需使用它即可。

{{1}}