[英]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.