当我从文本文件中读取时如何跳过行?

时间:2015-08-18 15:14:57

标签: java arraylist

我正在阅读一个看起来像这样的文本文件:

1
The Adventures of Tom Sawyer
2
Huckleberry Finn    
4    
The Sword in the Stone    
6  
Stuart Little

我必须这样做,以便用户可以输入参考号,程序将执行二进制和线性搜索并输出标题。我的老师说要使用两个ArrayLists,一个用于数字,一个用于标题,并从中输出。我只是无法弄清楚如何跳过行,所以我可以添加到相应的arraylist。

int number = Integer.parseInt(txtInputNumber.getText());
    ArrayList <String> books = new ArrayList <>();
    ArrayList <Integer> numbers = new ArrayList <> ();
    BufferedReader br = null;

    try {
        br = new BufferedReader(new FileReader("bookList.txt"));
        String word;
        while ((word = br.readLine()) != null ){
            books.add(word);
        }


    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

提前致谢,我感谢任何帮助!

3 个答案:

答案 0 :(得分:1)

您可以通过对行号进行 modulo 2 操作来检查您是偶数行还是奇行:

try (BufferedReader br = new BufferedReader(new FileReader("bookList.txt"))) {
    String word;
    int lineCount = 0;
    while ((word = br.readLine()) != null ){
        if (++lineCount % 2 == 0) {
            numbers.add(Integer.parseInt(word));
        } else {
            books.add(word);
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}

答案 1 :(得分:0)

int number = Integer.parseInt(txtInputNumber.getText());
ArrayList <String> books = new ArrayList <>();
ArrayList <Integer> numbers = new ArrayList <> ();
BufferedReader br = null;

try {
    br = new BufferedReader(new FileReader("bookList.txt"));
    String word;
    while ((word = br.readLine()) != null ){
            numbers.add(Integer.valueOf(word));   
            word = br.readLine()
            books.add(word);
    }


} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        br.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

答案 2 :(得分:0)

您可以检查它是否实际上是一个整数,您从文件中读取。据我所知,没有内置方法可以做到这一点,但您可以将自己定义为:

boolean tryParseInt(String value) {  
    try {  
        Integer.parseInt(value);  
        return true;  
    } catch (NumberFormatException e) {  
        return false;  
    }  
}

然后只是检查一下您读入的行是否为整数。

int number = Integer.parseInt(txtInputNumber.getText());
ArrayList <String> books = new ArrayList <>();
ArrayList <Integer> numbers = new ArrayList <> ();
BufferedReader br = null;

try {
    br = new BufferedReader(new FileReader("bookList.txt"));
    String word;

    while ((word = br.readLine()) != null ){
        if (tryParseInt(word))
            numbers.add(Integer.parseInt(word))
        else
            books.add(word);
    }
} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        br.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}

希望这有帮助!