Поэтому я некоторое время работаю над этой программой 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);
}
...
Предложения
int index = nameList.getSelectedIndex();
? Не похоже, чтобы выбранный индекс предоставил вам полезную информацию здесь.if(nameList.equals(searchName)){
. Список не может равняться строке.nameList
и сравнивает строку, содержащуюся в каждом элементе, с введенной строкой.i = 0
до i < nameList.getItemCount()
(или nameList.size()
если это java.util.List).else{ System.out.println("Error searching for the name: "...
внутри цикла for.Это будет печатать вне else много раз.