2014-09-13 97 views
3

我有以下方法,需要一串字符串输入,将它们添加到列表中,然后打算先打印偶数行,然后是奇数行。问题在于它只打印偶数行,不打印奇数行。该解决方案看起来很简单,但我看不出会导致此问题的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)); 

     } 
    } 
} 
+0

只是一个建议:删除x变量并使用list.size()而不是 – Bohemian 2014-09-13 00:36:51

回答

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

使用@波希米亚方法。但是如果你想使用你的代码,只需添加一个你的代码:

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; 
     } 
    }