获取图书ID并显示图书详细信息



我的"AllBookRecords.txt"文件如下:

Name        Date        Number
second   2002   22
thired   2003   33
fourth   2004   44
fifth   2005   55

和我的搜索按钮代码是:

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    String bookid=jTextField2.getText();
    File f=new File("D:\AllBookRecords.txt");
    try{
        FileReader Bfr=new FileReader(f);
        BufferedReader Bbr=new BufferedReader(Bfr);
        String bs;
        while( (bs=Bbr.readLine()) != null ){
            if( bs.contains(bookid ) ){
                String[] Ust=bs.split("   ");
                String Bname=Ust[0];
                String Bdate=Ust[1];
                jLabel1.setText("Book Found,    "+ Bname + "    " + Bdate);
            }
        }
    }
    catch (IOException ex) {
        ex.printStackTrace();
    } 
}             

当我输入例如33并点击按钮时,结果只显示最后一条记录如下:第五2005

为什么?谢谢你的帮助!

也许这并不能真正解决你的问题,但是按书号搜索图书的方法很容易产生错误。

您正在使用String.contains(bookid)检查完整行是否包含图书id。

例如:如果您的图书id是20,第一行将匹配,因为字符串2002包含图书id 20:

"second   2002   22".contains("20"); // returns true because 2002 'contains' 20

要解决这个问题,你应该先拆分字符串,然后只比较书的id。

update:一个可能的修复方法如下:

while( (bs=Bbr.readLine()) != null ){
    String[] Ust=bs.split("   ");
    String Bname=Ust[0];
    String Bdate=Ust[1];
    String id = Ust[2];
    if (id.equals(bookid.trim()) // only compare Id's + you should always trim user input
        jLabel1.setText("Book Found,    "+ Bname + "    " + Bdate);
        break;
    }
}

相关内容

  • 没有找到相关文章

最新更新