Функция поиска для проекта phonebook.java

1

Поэтому я некоторое время работаю над этой программой 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);
                }
        ...
Теги:
arrays
search

1 ответ

2

Предложения

  • Почему это: int index = nameList.getSelectedIndex(); ? Не похоже, чтобы выбранный индекс предоставил вам полезную информацию здесь.
  • Это никогда не будет работать: if(nameList.equals(searchName)){. Список не может равняться строке.
  • Вместо этого используйте цикл for, цикл через любую коллекцию, содержащую строки, я предполагаю, что это nameList и сравнивает строку, содержащуюся в каждом элементе, с введенной строкой.
  • Цикл for должен идти от i = 0 до i < nameList.getItemCount() (или nameList.size() если это java.util.List).
  • Не используйте этот блок else, else{ System.out.println("Error searching for the name: "... внутри цикла for.Это будет печатать вне else много раз.
  • Вам лучше использовать компоненты библиотеки Swing, а не AWT.
  • Вам лучше будет форматировать свой код. Каждое утверждение должно иметь свою собственную линию. Тщательные и регулярные углубления имеют значение.
  • Поскольку вы используете компоненты в своем графическом интерфейсе, вам может не понадобиться эта JOptionPane. Не могли бы вы найти строку поиска из одного из ваших текстовых полей?
  • 0
    Спасибо на воздушной подушке, я ценю ваш ответ. Извините за форматирование, это моя первая публикация.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню