我对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
经过多次尝试后,我对我的代码出了什么问题感到有些困惑,我们非常感谢任何帮助或建议。
答案 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}}