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