将输入文件中的每一行添加到数组中

时间:2013-09-23 23:41:58

标签: java arrays file-io

我需要将用户输入文本文件的每一行(单个单词)的内容添加到数组中的单独元素中。 *我知道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

5 个答案:

答案 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);
    }
}
相关问题