我的代码必须读取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);
}
答案 0 :(得分:1)
更改您的代码如下:
i++;
list.addFirst(newString);
到
list.addFirst(newString);
i++;
因为您将 newString 添加到列表的方式将跳过一次计数
<强>更新强>
抱歉,但我必须修复我的答案,而不是删除它。我检查了两次,根据正确的答案添加这一行: - )
list.addFirst(newString);
答案 1 :(得分:0)
当你= = 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);
}