这是我的代码,我正在使用bufferedreader来读取文件。它会将读取的值存储到数组中,但是当我尝试打印出数组时,它将返回空值。为什么会这样?代码:
BufferedReader reader = new BufferedReader(new FileReader("valid file path here"));
int lines = 0;
while (reader.readLine() != null) {
lines++;
}
//declare and fill array
String[] coin_names = new String[lines];
String line;
int x = 0;
while ((line = reader.readLine()) != null) {
coin_names[x] = line;
x++;
}
for (int y = 0; y < lines; y++) {
System.out.println(coin_names[y]);
}
为什么它为得到的所有值都返回null?
答案 0 :(得分:3)
问题出在这里
while (reader.readLine() != null) {
lines++;
}
您的初始while
循环正在消耗整个文件。更好的方法是将其删除,而仅使用列表存储行:
List<String> coinNames = new ArrayList<>();
String line;
int x = 0;
while ((line = reader.readLine()) != null) {
coinNames.add(line);
x++;
}
for (String name : coinNames) {
System.out.println(name);
}
虽然您可以尝试重置阅读器,但没有理由为什么只需要初始化一个数组就必须两次读取整个文件。为作业使用正确的数据结构。