我的代码必须读取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 == 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);

}

关于java - ArrayList中的一行没有打印出来,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25881942/

10-11 04:49