【问题标题】:Search function for a phonebook.java projectphonebook.java 项目的搜索功能
【发布时间】:2014-04-30 01:35:50
【问题描述】:

所以我已经在这个项目 PhoneBook.java 程序上工作了一段时间。该程序打开一个 .txt 文件并将其导入到按姓氏、名字排序的列表中。我正在尝试编写一个打开一个窗口的搜索功能,要求您输入一个名称,然后单击“确定”它应该选择搜索的索引。我不明白为什么我的 searchMI 以下代码不起作用。我很感激你能给我的任何帮助。

public class PhoneBook extends Frame implements ActionListener, ItemListener {

MenuItem newMI, openMI, saveMI, saveAsMI, exitMI;
MenuItem searchMI, deleteMI, updateMI, newEntryMI, sortMI;
String fileName;
List nameList;
List numberList;
TextField lastName, firstName, phoneNumber;

// implementing ActionListener
public void actionPerformed(ActionEvent event) {
    Object source = event.getSource();
    if(source == newMI) 
    {
        nameList.removeAll();
        numberList.removeAll();
        fileName = null;
        display(-1);
        setTitle("White Pages")
    }
    else if(source == searchMI) 
    {
        String searchName = JOptionPane.showInputDialog(this,
                            "Please enter a name (last first) to search:");
        System.out.println("Name to search: " + searchName);
        int index = nameList.getSelectedIndex();
        String name = lastName.getText().trim() + " " + firstName.getText().trim();
            for(int i=0; i!=index; i++){
                if(nameList.equals(searchName)){
                    nameList.select(index);
                }
                else
                {
                    System.out.println("Error searching for the name: " + searchName);
                }
        ...

【问题讨论】:

    标签: java arrays search


    【解决方案1】:

    建议

    • 为什么会这样:int index = nameList.getSelectedIndex();?所选索引似乎不会在此处为您提供任何有用的信息。
    • 这永远不会起作用:if(nameList.equals(searchName)){。 List 不能等于 String。
    • 改为使用您的 for 循环,遍历包含字符串的任何集合,我猜它是 nameList 并将每个项目中保存的字符串与输入的字符串进行比较。
    • for 循环应该从 i = 0i < nameList.getItemCount()(或者 nameList.size(),如果它是 java.util.List)。
    • 不要有 else 块,else{ System.out.println("Error searching for the name: "... 在 for 循环内。这样做会多次打印出 else 语句。
    • 最好使用 Swing 库组件而不是 AWT。
    • 您需要更好地格式化发布的代码。每个语句都应该有自己的行。仔细和定期的压痕很重要。
    • 由于您在 GUI 中使用组件,因此您可能不需要该 JOptionPane。您能否改为从您的某个文本字段中获取搜索字符串?

    【讨论】:

    • 谢谢你的气垫船我很感激你的回复。抱歉,这是我第一次发布的格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多