我需要将用户输入文本文件的每一行(单个单词)的内容添加到数组中的单独元素中。 *我知道ArrayList对于这个问题是一个更好的数据结构,但我只能使用一个数组。
这是我的代码:
public static void main(String[] args) throws FileNotFoundException {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a file name: ");
System.out.flush();
String filename = scanner.nextLine();
File file = new File(filename);
FileReader reader = new FileReader(file);
try (BufferedReader buffReader = new BufferedReader(reader)) {
String line;
int i=0;
String[] words = new String[10];
while((line = buffReader.readLine()) != null) {
words[i]=buffReader.readLine();
System.out.println(words[i]);
i++;
}
}
catch(IOException e){
System.out.println(e);
}
}
输入文件只是:
Pans
Pots
opt
sit
it's
snap
程序输出如下。它似乎正在跳过其他所有行。
Pots
sit
snap
答案 0 :(得分:4)
每个while
循环迭代读取两行,一个在while
条件下,另一个在循环体的第一行。结果是每次迭代消耗两行,并且只打印两行中的第二行。
消除循环体中的第二个调用,以便每行有一次循环迭代(和一个print语句)。
答案 1 :(得分:1)
更改while循环,如下所示。如果在循环条件检查时,您正在读取该行,然后再次读取while循环中第一行的行。所以你正在阅读两行并只打印一行。
while((line = buffReader.readLine()) != null) {
System.out.println(line );
i++;
}
答案 2 :(得分:0)
while((line = buffReader.readLine()) != null)
该行读取并消耗了第一个输入行,这就是为什么你没有看到 Pans 和偶数索引输入的原因。
答案 3 :(得分:0)
您可以使用ArrayList而不是使用toArray方法将其转换为Array吗?你的局限是什么?为什么?
答案 4 :(得分:0)
public static void main(String[] args) throws FileNotFoundException {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a file name: ");
System.out.flush();
String filename = scanner.nextLine();
File file = new File(filename);
FileReader reader = new FileReader(file);
try (BufferedReader buffReader = new BufferedReader(reader)) {
String line;
int i=0;
String[] words = new String[10];
//modify line = buffReader.readLine()
while((words[i]=buffReader.readLine()) != null) {
//modify //words[i]=buffReader.readLine();
//words[i]=buffReader.readLine();
System.out.println(words[i]);
i++;
}
}
catch(IOException e){
System.out.println(e);
}
}