我怎样才能让这个程序也打印列表中的第一个条目?

Posted

技术标签:

【中文标题】我怎样才能让这个程序也打印列表中的第一个条目?【英文标题】:How can I get this program to also print the first entry in the list too? 【发布时间】:2009-01-19 19:42:08 【问题描述】:

我无法显示查询中返回多个答案的第一个条目。例如,结果集为 5 的搜索将返回第二个到第五个,而错过第一个条目。如果我搜索具有一个条目作为输出的内容,它不会返回任何内容,只会挂起,因为它是数据库中的第一个也是唯一一个条目。当我调试它并搜索我知道在数据库中只有一个条目的东西时,它转到第 12 行,然后是第 15 行,然后是第 25 行。如何修改循环以包含要打印的第一个条目?

代码:

try 
    ResultSet rs;
    String comparex = jTextField2.getText().trim().toUpperCase();// puts the textfield into a string object
    rs = stmt.executeQuery(
        "SELECT * FROM BASTIMP where DETAILS like '%"+comparex+"%'"
    ); //paradox equivalent '..comparex..'
    String amount;
    String date;
    String attached = "";

    if (rs.next()) // **Line 12**
    

    else 
        DisplayAreaX.setText("ENTER VALID VENDOR");
      
    while (rs.next())  // **Line 15**
        String details = rs.getString("DETAILS"); //get results from DETAILS
        date = rs.getString ("DATE PAID");        //CORRECT?
        amount = rs.getString ("AMOUNT BANK");
        attached = attached + details +":"+ '\n'+ "Date " +date+ " / "+
            "Amount £"+ amount+ '\n'; // - ADDS MULTIPLE ENTRIES ON OUTPUT OF jList!
        DisplayAreaX.setText(attached);
        System.out.println(details+":"+ '\n'+ "Date "+date+ " / "+
            "Amount £"+ amount+ '\n');
    
 catch (SQLException e) 
    System.out.println("SQL Exception: " + e.toString());
 catch (ClassNotFoundException cE) 
    System.out.println("Class Not Found Exception: " + cE.toString());
 // **Line 25**

谢谢

【问题讨论】:

完成,至少部分完成。可以做更多的清理工作 【参考方案1】:

您在访问结果之前调用了 rs.next() 两次。我想说有两个选择,首先用 do...while 循环替换 while,或者删除 if/else 语句并在计数器中跟踪结果,最后检查计数器是否为 0 和然后显示消息。

【讨论】:

您好,感谢您的回复。当我删除 if/else 语句时,它可以完美运行。但是当输入错误的数据时,代码怎么会显示“无效的供应商”呢?你能修改一下代码吗?【参考方案2】:

为什么不把逻辑改成:

int recordCount = 0;

while (rs.next()) 

  recordCount ++;
  String details = rs.getString("DETAILS"); //get results from DETAILS
  date = rs.getString ("DATE PAID");        //CORRECT?
  amount = rs.getString ("AMOUNT BANK");
  attached = attached + details +":"+ '\n'+ "Date " +date+ " / "+  "Amount £"+ amount+ '\n'; // - ADDS MULTIPLE ENTRIES ON OUTPUT OF jList!
  DisplayAreaX.setText(attached);
  System.out.println(details+":"+ '\n'+ "Date "+date+ " / "+  "Amount £"+ amount+ '\n');


if (recordCount == 0) 

   DisplayAreaX.setText("ENTER VALID VENDOR");

【讨论】:

感谢您的回复,唯一的问题是,当我尝试时,我得到了“不兼容的布尔和 int 类型”的错误。运算符 ++ 也不能应用于布尔值。 我认为目的是让 recordCount 成为 int。【参考方案3】:

只需使用 do-while 语句代替 while :-)

【讨论】:

以上是关于我怎样才能让这个程序也打印列表中的第一个条目?的主要内容,如果未能解决你的问题,请参考以下文章

获取 Swift 数组中的第一个条目

删除列表列表中的第一项 - 制作副本而不是就地修改

我怎样才能让RecyclerView变得更流畅?

将多个字符串打印到文件

我怎样才能让这个 switch 语句使用扫描仪工作?

java怎么实现让添加的内容始终排在列表的第一位