配列リストで何を探しているのか表示されている問題があります。配列を検索すると情報が見つかりますが、リスト全体が漁師という名前のすべてのオブジェクトに表示されます。それはアイテムを検索し、見つかった場合は私が望むアイテムを印刷しますが、それは漁師のすべてのインスタンスを出力します。しかし、検索は厄介で、場合によってはうまくいきません。だから、私は適切な検索とその検索の出力を行うには、検索機能のヘルプが必要です。 「漁師」から各漁師のSSNにオブジェクト名を変更して検索パラメータに役立てる方法については、私はどうしたらよいか分かりません。しかし、個々の漁師のオブジェクト名を変更する方法を理解できませんでした。ご提供いただけるお手伝いをありがとうございます。機能配列リスト検索
public static void fishermanMenu() {
// declare variables and array
int selection;
String fName;
String lName;
String ssn;
String number;
String email;
String searchSSN;
String menuFisherman[] = {"Register New Fisherman", "Search Fisherman", "Return to Main Menu"};
System.out.println("\nFisherman Menu");
// for loop to print menu from array
for(int i = 0, k = 1; i < menuFisherman.length; i++, k++) {
System.out.println("("+ k + ") " + (menuFisherman[i]));
}
System.out.print("Selection: ");
selection = input.nextInt();
input.nextLine();
if (selection == 1) {
$Fisherman fisherman = new $Fisherman();
fishermen.add(fisherman);
System.out.print("Enter First Name: ");
fName = input.next();
fisherman.setFirstName(fName);
System.out.print("Enter Last Name: ");
lName = input.next();
fisherman.setLastName(lName);
System.out.print("Enter Phone Number...ie 904-560-7896: ");
number = input.next();
fisherman.setPhoneNumber(number);
System.out.print("Enter SSN...ie 123-45-6789: ");
ssn = input.next();
fisherman.setSSN(ssn);
System.out.print("Enter email address: ");
email = input.next();
fisherman.setEmailAddress(email);
System.out.print(fishermen.toString());
fishermanMenu();
}
else if (selection == 2) {
System.out.println("Enter Social Security Number of fisherman to search for below.");
System.out.print("SSN: ");
searchSSN = input.nextLine();
for ($Fisherman fisherman : fishermen) {
if (fisherman.getSSN().equals(searchSSN)) {
System.out.println(fishermen.toString());
fishermanMenu();
}
else {
System.out.println("No match for that fisherman");
fishermanMenu();
}
}
}
}
ここに出力します。あなたが "123"を検索したときにわかるように、それは全体のリストを返しました。そして、 "456"を検索したとき、それは "その漁師と一致しません"と言いました。
Main Menu
(1) Fisherman Menu
(2) Tournament Menu
(3) Fish Menu
(4) Close Tournament
(5) Quit Program
Selection: 1
Fisherman Menu
(1) Register New Fisherman
(2) Search Fisherman
(3) Return to Main Menu
Selection: 1
Enter First Name: Matt
Enter Last Name: P
Enter Phone Number...ie 904-560-7896: 123
Enter SSN...ie 123-45-6789: 123
Enter email address: 123
[fisherman{SSN=123, firstName='Matt', lastName='P', phoneNumber='123', emailAddress='123'}]
Fisherman Menu
(1) Register New Fisherman
(2) Search Fisherman
(3) Return to Main Menu
Selection: 1
Enter First Name: Joe
Enter Last Name: K
Enter Phone Number...ie 904-560-7896: 456
Enter SSN...ie 123-45-6789: 456
Enter email address: 456
[fisherman{SSN=123, firstName='Matt', lastName='P', phoneNumber='123', emailAddress='123'}, fisherman{SSN=456, firstName='Joe', lastName='K', phoneNumber='456', emailAddress='456'}]
Fisherman Menu
(1) Register New Fisherman
(2) Search Fisherman
(3) Return to Main Menu
Selection: 2
Enter Social Security Number of fisherman to search for below.
SSN: 123
[fisherman{SSN=123, firstName='Matt', lastName='P', phoneNumber='123', emailAddress='123'}, fisherman{SSN=456, firstName='Joe', lastName='K', phoneNumber='456', emailAddress='456'}]
Fisherman Menu
(1) Register New Fisherman
(2) Search Fisherman
(3) Return to Main Menu
Selection: 2
Enter Social Security Number of fisherman to search for below.
SSN: 456
No match for that fisherman
Fisherman Menu
(1) Register New Fisherman
(2) Search Fisherman
(3) Return to Main Menu
Selection:
ここでの小さな提案:Javaの規約では、レガシーコードまたはマシン生成コードを除き、識別子に "$"を使用することを推奨していません。 Java言語仕様[ここ](https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.8) –