ArrayList中的一行是't打印出来



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

相关内容

  • 没有找到相关文章

最新更新