簡體   English   中英

無法打印奇數行

[英]Trouble printing odd lines

我有以下方法,它采用字符串輸入行,將它們添加到列表然后打算首先打印偶數行,然后打印奇數行。 問題是它只打印偶數行而不會繼續打印奇數行。 解決方案似乎很簡單,但我看不出會導致此問題的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));

        }
    }
}

而不是在循環中處理算術,讓循環迭代處理它:

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()

使用@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;
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM