所以我正在阅读文件中的飓风信息,信息的格式在下面
1980年8月945 100艾伦
1983年8月962 100艾丽西亚
1984年9月949 100戴安娜
1985 Jul 1002 65 Bob
以下是我的数组用于保存数据的代码,而while循环用于读取文件
int arrayLength = 59;
String [] year = new String[arrayLength];
String [] month = new String[arrayLength];
String [] pressure = new String[arrayLength];
String [] month = new String[arrayLength];
File fileName = new File("hurcdata2.txt");
Scanner inFile = new Scanner(fileName);
int index = 0;
while (inFile.hasNext())
{
year[index] = inFile.next();
month[index] = inFile.next();
pressure[index] = inFile.next();
windSpeed[index] = inFile.next();
name[index] = inFile.next();
index ++;
}
当我运行这个程序并打印出从文件中读取的内容时,我得到了这个
姓名[Ljava.lang.String; @ 42f7ba93
年[Ljava.lang.String; @ 74cb7e2c
月[Ljava.lang.String; @ 5bc8b69b
压力[Ljava.lang.String; @ 564ca930
我不知道是什么导致程序读取这样的文件,文件名称正确并且与程序在同一目录中。
答案 0 :(得分:1)
在他们身上打印阵列/调用.toString并不能做你喜欢用Java做的事情。而不是做
System.out.println(name);
你需要做
for (String nm : name) {
System.out.print(nm);
}
答案 1 :(得分:0)
假设数据存储正确并且打印数据使用以下代码:
int i = 0;
while(i < index)
{
System.out.println("Name:"+name[i]);
System.out.println("Year:"+year[i]);
System.out.println("Month:"+month[i]);
System.out.println("Pressure:"+pressure[i]);
i++;
}
答案 2 :(得分:0)
您可能正在使用System.out.println(year)
,此方法实际调用year.toString()
。由于数组是不覆盖toString()
的简单对象,因此在打印时会得到默认行为:
/* Object.toString() source */
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
您应该使用Arrays.deepToString(year)
方法:
System.out.println(Arrays.deepToString(year));
System.out.println(Arrays.deepToString(month));
System.out.println(Arrays.deepToString(pressure));
System.out.println(Arrays.deepToString(month));
类似但更昂贵的替代方法是创建new ArrayList
并打印它:
System.out.println(new ArrayList<>(Arrays.asList(year)));
System.out.println(new ArrayList<>(Arrays.asList(month)));
System.out.println(new ArrayList<>(Arrays.asList(pressure)));
System.out.println(new ArrayList<>(Arrays.asList(month)));
除此之外,您的程序有两个month
变量,因此甚至无法编译。