- ベストアンサー
Javaプログラムでのsetの使用例と重複確認方法
- Javaのプログラムにおいて、フィールドとして「String mailAddress」を追加しました。
- addCustomerCardメソッドに引数としてmailAddressを追加し、setを使って重複を確認したい場合の具体的なプログラムです。
- 既に存在するmailAddressの場合は例外をスローする仕組みも実装されています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まず、mailAddressフィールドを追加するのを忘れずに。 class CustomerCard { String name; int id; String mailAddress; ... 判定のためだけにSetを使うということですか。 このあたりに追加してみる。 private CustomerCard[] customers = new CustomerCard[5]; private int index = 0; private Set<String> mails = new HashSet<String>(); それから。 public void addCustomerCard(String name, String mailAddress) throws DuplicatedException { if (mails.contains(mailAddress)) { throw new DuplicatedException(mailAddress); } mails.add(mailAddress); customers[index] = new CustomerCard(1 + index,name, mailAddress); index++; } リストの最後のほうに例外の定義を追加する。 class DuplicatedException extends Exception { private String mailAddress; public DuplicatedException(String mailAddress) { this.mailAddress = mailAddress; } public String getMailAddress() { return mailAddress; } } 表示部にメールアドレスも追加。 public void printAllInfo() { System.out.print("ID =" + customers[0].id + ","); System.out.print("名前 = " + customers[0].name + ","); System.out.println("メアド = " + customers[0].mailAddress); System.out.print("ID =" + customers[1].id + ","); System.out.print("名前 = " + customers[1].name + ","); System.out.println("メアド = " + customers[1].mailAddress); System.out.print("ID =" + customers[2].id + ","); System.out.print("名前 = " + customers[2].name + ","); System.out.println("メアド = " + customers[2].mailAddress); } メイン。 public static void main(String[] args){ CustomerManager manager = new CustomerManager(); try { manager.addCustomerCard( "山田一郎", "yamada@example.net"); manager.addCustomerCard( "鈴木太郎", "suzuki@example.net"); manager.addCustomerCard( "田中次郎", "tanaka@example.net"); } catch (DuplicatedException e) { System.out.println("メアドが重複してる: " + e.getMailAddress()); return; } manager.printAllInfo(); } とりあえずこれで要求は満たしていると思う。
お礼
いつもご丁寧にありがとうございます。感激です!