这个问题在这里已经有答案了:
打印java数组最简单的方法是什么(32个答案)
上个月关门了。
我对java相当陌生,我相信问题来自于我对java的缺乏理解。
我正在尝试读取csv值的数组列表。下面是我的代码:
public static void readFile(){
String line = "";
try{
BufferedReader br = new BufferedReader(new FileReader(Main.filepath));
while((line = br.readLine()) != null){ //reads whilst the next line is not null
fileData.add(line); //adds current line to array list
}
catch (Exception ex){
System.out.println("File Not Found"); //if file not found, print
}
}
public class Film{
public static void duration(){
readFile();
for (int i = 0; i < (fileData.size()); i++) {
//System.out.println(fileData);
String[] temp = fileData.get(1).split(",");
System.out.println(temp);
}
}
``` `readFile()` 读取csv文件并将每一行保存为arraylist中的一个元素 `filedata` 是数组列表 `filepath` 是文件的路径
csv文件的格式为 `"filmName,releaseDate,filmRating,filmGenre,filmDuration,filmScore"` 我试图让film()打印出arraylist中每个元素的发布日期,但是我的输出是:
[Ljava.lang.String;@6bf2d08e
[Ljava.lang.String;@5eb5c224
[Ljava.lang.String;@53e25b76
[Ljava.lang.String;@73a8dfcc
当我期待更像
1999
2007
1956
1987
感谢您的帮助。
3条答案
按热度按时间ryhaxcpt1#
您必须首先在循环中重新输入i变量而不是1,然后split方法返回一个字符串数组,因此您应该在数组中选择正确的值:
d8tt03nd2#
迭代每个
String
数组的tmp
并打印该值。此外,你应该替换fileData.get(1).split(",");
为了fileData.get(i).split(",");
```for (int i = 0; i < (fileData.size()); i++) {
String[] tmp = fileData.get(i).split(",");
for(String t : tmp)
System.out.println(tmp);
}
for (String fileDatum : fileData) {
String[] tmp = fileDatum.split(",");
System.out.println(Arrays.toString(tmp));
}
fileData.stream().map(i -> i.split(",")).forEach(i -> Arrays.asList(i).forEach(System.out::println));
fileData.stream().map(i -> i.split(",")).map(Arrays::toString).forEach(System.out::println);
yftpprvb3#
这将使用tostring的默认实现打印出数组:
返回对象的字符串表示形式。通常,tostring方法返回一个字符串,该字符串“以文本形式表示”这个对象。结果应该是一个简洁,但信息丰富的代表,是一个人容易阅读。建议所有子类重写此方法。
class对象的tostring方法返回一个字符串,该字符串由对象作为示例的类的名称、at符号字符“@”和对象哈希码的无符号十六进制表示形式组成。换句话说,此方法返回的字符串等于:
在这种情况下,您需要再次迭代数组,并使用tostring触发每个元素