无法打印奇数行

时间:2014-09-13 00:33:26

标签: java list arraylist bufferedreader

我有以下方法,它接受字符串输入行,将它们添加到列表然后打算首先打印偶数行,然后打印奇数行。问题是它只打印偶数行而不会继续打印奇数行。解决方案似乎很简单,但我看不出会导致此问题的if / else语句会出现什么问题。

public static void printLines(BufferedReader r, PrintWriter w) throws IOException {
    //first prints even lines then odd lines
    ArrayList<String> list = new ArrayList<String>();

    int x = 0;
    for (String line = r.readLine(); line != null; line = r.readLine()) {
        list.add(line);
        x++;
    }
    for (int i = 1; i < list.size(); i++){
        if (i%2 == 0 && x < 1){
            w.println(list.get(i));
            x++;
        }
        else if (i%2 == 1 && x >= 1)
        {
            w.println(list.get(i));

        }
    }
}

2 个答案:

答案 0 :(得分:3)

不要在循环中处理算术,而是让循环迭代处理它:

for (int i = 1; i < list.size(); i+=2)
    w.println(list.get(i));
for (int i = 0; i < list.size(); i+=2)
    w.println(list.get(i));

我建议您删除x变量并使用list.size()代替

答案 1 :(得分:1)

使用@Bohemian方法。但是如果你想使用你的代码,只需在你的for:

中添加一个else
    for (int i = 1; i < list.size(); i++) {
        if (i % 2 == 0 && x < 1) {
            w.println(list.get(i));
            x++;
        } else if (i % 2 == 1 && x >= 1) {
            w.println(list.get(i));
        } else{
            i = 0;
            x = 0;
        }
    }