gpt4 book ai didi

java - readLine 用于读取多行而不循环?

转载 作者:行者123 更新时间:2023-11-30 03:46:19 26 4
gpt4 key购买 nike

所以我的 servlet 正在从另一个 servlet 读取 URL 链接,然后发布与其关联的文章。所有文章都位于一个 .txt 文件中,每篇文章都有自己单独的行。所以我已经使第一个 URL 链接正常工作,但我无法使第二个 URL 链接正常工作。问题是如果我使用像 while( br.readline() != null) 这样的循环然后它将显示所有 3 篇文章,而不仅仅是我点击的 URL 的文章。当我不循环它而只使用 br.readline() 时它停在第一行,不会像我请求 URL 2 或 URL 3 时那样移动到第二行。这是我的代码:

s = br.readLine();
out.println("<tr>");
StringTokenizer s2 = new StringTokenizer(s, "|");
if (request.getParameter("article1") != null){
while (s2.hasMoreElements()){
if (index == 0){
out.println("<td class='first'>"+s2.nextElement()+"</td>");
}
else if (index == 1){
out.println("<td>"+s2.nextElement()+"</td>");
}
else if (index == 2){
out.println("<td>"+s2.nextElement()+"</td>");
}
else if (index == 3){
out.println("<td>"+s2.nextElement()+"</td>");
}
index++;
out.println("</tr>");
}
}
else if (request.getParameter("article2") != null){
s = br.readLine();
while (s2.hasMoreElements()){
if (index == 4{
out.println("<td class='first'>"+s2.nextElement()+"</td>");
}
else if (index == 5){
out.println("<td>"+s2.nextElement()+"</td>");
}
else if (index == 6){
out.println("<td>"+s2.nextElement()+"</td>");
}
else if (index == 7){
out.println("<td>"+s2.nextElement()+"</td>");
}
index ++;
out.println("</tr>");
}

我知道这可能只是一个愚蠢的编码错误,我看不到它,因为我已经研究它很长时间了,但我似乎无法让它做我想要的事情。另外我没有展示第 3 条的代码,因为它本质上是相同的,如果我可以修复第 2 条的代码,那么第 3 条的代码基本上是相同的。

最佳答案

我强烈建议您将代码的“读取数据”部分与“输出 HTML”部分分开。

看起来您应该为一篇文章创建一个数据结构,其中包含每行中不同位的属性。然后您可以:

  • 创建 List<Article>
  • 一次读取一行
    • 将该行解析为 Article (例如,通过根据您的代码进行拆分)
    • 添加每个 Article到列表

您现在拥有 List<Article>您可以在需要输出 HTML 的代码部分中以任何您喜欢的方式使用它。您无需担心将行读取和解析与输出代码混合在一起。这应该会让一切变得更容易处理。

关于java - readLine 用于读取多行而不循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25612903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com