问题描述
我写了一个代码,用于在 .txt 文件中按书名和作者姓名搜索一些书,但问题是它在按书名和书作者搜索时起作用,它只在书名中输入没有作者,但是当我尝试仅通过没有书名的作者进行搜索时,它会返回整个 .txt 文件,而不是作者写的书。我似乎无法找到问题所在。我是新手。这是代码。而 .txt 文件是这样写的:
饥饿游戏,苏珊娜柯林斯(以“,”作为标题和作者之间的界限) 以及更多书籍
package com.carti;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.io.BufferedReader;
import java.awt.event.ActionListener;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
JFrame frame=new JFrame("Carti");
JButton cauta=new JButton("Cauta");
cauta.setBounds(300,10,70,60);
frame.add(cauta);
frame.setSize(1000,1000);
JLabel carteLabel = new JLabel("Carte:");
carteLabel.setBounds(10,60,30);
frame.add(carteLabel);
JLabel autorLabel = new JLabel("Autor:");
autorLabel.setBounds(10,40,100,30);
frame.add(autorLabel);
JTextField carte=new JTextField();
carte.setBounds(70,200,30);
frame.add(carte);
JTextField autor=new JTextField();
autor.setBounds(70,30);
frame.add(autor);
DefaultListModel<String> carti = new DefaultListModel<>();
BufferedReader bf = new BufferedReader(new FileReader("carti.txt"));
String line;
while((line=bf.readLine()) != null){
carti.addElement(line);
}
JList<String> cartiJList = new JList<>(carti);
cartiJList.setBounds(20,90,400,900);
frame.add(cartiJList);
DefaultListModel<String> rezultat = new DefaultListModel<>();
JList<String> rezultatJList = new JList<>(rezultat);
rezultatJList.setBounds(430,900);
frame.add(rezultatJList);
cauta.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
rezultat.clear();
String searchCarte = carte.getText().trim().toupperCase();
String searchAutor = autor.getText().trim().toupperCase();
for (int i = 0; i < carti.size(); i++)
{
String book = carti.get(i);
StringTokenizer st = new StringTokenizer(book,",");
String bookToken = st.nextToken();
String authorToken = st.nextToken();
if(searchCarte.length() != 0 && searchAutor.length() != 0)
{
if(bookToken.toupperCase().contains(searchCarte) && authorToken.toupperCase().contains(searchAutor))
{
rezultat.addElement(book);
}
}else if(bookToken.length() != 0)
{
if(bookToken.toupperCase().contains(searchCarte))
rezultat.addElement(book);
}
else if(authorToken.length() != 0 )
{
if(authorToken.toupperCase().contains(searchAutor))
rezultat.addElement(book);
}
}
}
});
frame.setLayout(null);
frame.setVisible(true);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)