【问题标题】:Accessing/creating multi dimensional array in Java在 Java 中访问/创建多维数组
【发布时间】:2014-09-17 19:45:23
【问题描述】:

我对 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

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

【问题讨论】:

  • 我认为您没有正确读取拆分后的字符串。看看这个:stackoverflow.com/questions/5360628/…
  • 运行 System.out.println(Arrays.toString(myArray[0][0])); 时会打印什么?无论如何,我认为您可以省略Arrays.toString 部分。只需打印myArray[0][0]

标签: java arrays netbeans multidimensional-array


【解决方案1】:

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

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

那里不需要Arrays.toString,因为你的锯齿数组的元素已经是Strings。

【讨论】:

  • 谢谢,这正是我想要的,看答案可能很明显我是一个Java菜鸟。当堆栈溢出允许我接受时,我会在几分钟内接受答案。谢谢
  • 答案对我来说可能很明显,但对你来说不是,也没有必要为此感到难过。我很高兴能帮上忙。 :)
  • 再次感谢您,我想我们都必须从某个地方开始:D
【解决方案2】:

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

但是myArray[0][0] 不是一个数组,而是一个单独的元素。所以Arrays.toString()不能用在上面。它不会编译。

由于每个元素 myArray[i][j] 都是 String,因此您无需对元素执行任何其他操作 - 只需使用它即可。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2012-09-21
    • 2011-07-23
    • 2010-12-15
    • 2017-04-13
    • 1970-01-01
    • 2016-12-18
    相关资源
    最近更新 更多