簡體   English   中英

ArrayList中的一行沒有打印出來

[英]One line in ArrayList isn't printed out

我的代碼必須讀取50行輸入並以相反的順序輸出它們,然后再輸出其他50行,因此輸出從第50行開始,轉到第1行,然后從第100行開始到第50行,我開始工作了。 但唯一的事情是,這51行沒有打印出來,我無法弄清問題所在。

public static void doIt(BufferedReader r, PrintWriter w) throws IOException {
    String newString;
    LinkedList<String> list = new LinkedList<String>();
    int i = 0;
    while ((newString = r.readLine()) != null) {
        if (i < 50) {
            i++;
            list.addFirst(newString);
        } else {
            for (String s : list)
                w.println(s);
            list.clear();
            i = 0;
        }
    }

    for (String s : list)
        w.println(s);

}

更改您的代碼,如下所示:

 i++; 
list.addFirst(newString); 

list.addFirst(newString); 
 i++; 

因為您將newString添加到列表的方式將跳過一個計數

更新:

抱歉,我必須解決我的問題,而不是刪除它。 我檢查了兩次,並根據正確的答案添加了這一行:-)

list.addFirst(newString);

當i == 50時,您將丟棄所讀取的行,這是一個使其起作用的修復程序。

public static void doIt(BufferedReader r, PrintWriter w) throws IOException {

String newString;
LinkedList<String> list = new LinkedList<String>();
int i = 0;
while ((newString = r.readLine()) != null) {
    if (i < 50) {
        i++;
        list.addFirst(newString);
    } else {
        for (String s : list)
            w.println(s);
        list.clear();
        list.addFirst(newString); // <---- add this line and you should be fine
        i = 0;
    }
}

for (String s : list)
    w.println(s);

}

暫無
暫無

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

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