Variable Anzahl von Parametern¶
In Java können Sie Methoden definieren, die eine variable Anzahl von Argumenten akzeptieren.
Dies wird durch die Verwendung von ... (drei Punkte/Ellipsis) erreicht. Diese Technik ist nützlich,
wenn Sie nicht wissen, wie viele Argumente an eine Methode übergeben werden.
¸A¸¸¸¸¸¸¸¸
1. Variable Anzahl Parameter
—————————-
Ein Programm soll die folgenden Anforderungen erfüllen: Erstellen Sie in einer Klasse Berechnungen
eine Methode, die beliebig viele Integer-Werte, die als Parameter übergeben werden, multipliziert und das
Ergebnis zurückgibt. Der Nutzer dieser Methode soll nicht gezwungen werden, ein Array als Übergabeparameter zu verwenden.
Wichtig
🚩
Setzen Sie oben genannte Methode in der Klasse Berechnungen um. Erstellen Sie ein Hauptprogramm, welches Ihre Methode testet.
Lösung anzeigen
1// Small helper class for arithmetic methods.
2public class Calc {
3
4 // Adds any number of integers and returns the total.
5 static public int add(int... a) {
6 int sum = 0;
7 for (int num : a) {
8 sum += num;
9 }
10 return sum;
11 }
12}
2. Gästeliste¶
Erstellen Sie in einer Klasse Party eine Methode inviteGuests, der beliebig viele Objekte der Klasse Guest als
Parameter übergeben werden können. Diese Methode soll die übergebenen Gäste in einer Liste speichern und für jeden Gast
eine Bestätigung wie
„Eingeladen: [Name] ([Email])“
auf der Konsole ausgeben.
Wenn ein Gast bereits eingeladen wurde (d.h. ein Gast mit derselben E-Mail-Adresse bereits vorhanden ist), soll stattdessen
„Gast bereits eingeladen: [Name] ([Email])“
ausgegeben werden. Der Nutzer dieser Methode soll nicht gezwungen werden, ein Array als Übergabeparameter zu verwenden.
Wichtig
🚩
Erstellen Sie ein Hauptprogramm, welches die Methode inviteGuests testet, indem Sie mindestens drei Gäste auf
einmal übergeben – darunter auch einen Gast mit einer E-Mail-Adresse, die bereits verwendet wurde. Geben Sie
anschließend die gesamte Gästeliste aus.
Lösung anzeigen
1// Represents one guest with name and unique email address.
2public class Guest {
3 // Display name of the guest.
4 private String name;
5 // Email is used as unique identifier.
6 private String email;
7
8 // Creates a new guest with name and email.
9 public Guest(String name, String email) {
10 this.name = name;
11 this.email = email;
12 }
13
14 // Returns the guest name.
15 public String getName() {
16 return name;
17 }
18
19 // Returns the guest email.
20 public String getEmail() {
21 return email;
22 }
23
24 // Returns a readable text output for printing.
25 @Override
26 public String toString() {
27 return name + " (" + email + ")";
28 }
29}
1import java.util.ArrayList;
2import java.util.List;
3
4// Manages a party guest list and avoids duplicate email invites.
5public class Party {
6 // Internal list of invited guests.
7 private List<Guest> guestList;
8
9 // Creates an empty party guest list.
10 public Party() {
11 this.guestList = new ArrayList<>();
12 }
13
14 // Invites one or more guests; duplicates are skipped.
15 public void inviteGuests(Guest... guests) {
16 for (Guest guest : guests) {
17 if (isAlreadyInvited(guest.getEmail())) {
18 System.out.println("Gast bereits eingeladen: " + guest);
19 } else {
20 guestList.add(guest);
21 System.out.println("Eingeladen: " + guest);
22 }
23 }
24 }
25
26 // Checks whether an email already exists in the guest list.
27 private boolean isAlreadyInvited(String email) {
28 for (Guest g : guestList) {
29 if (g.getEmail().equals(email)) {
30 return true;
31 }
32 }
33 return false;
34 }
35
36 // Prints all currently invited guests.
37 public void printGuestList() {
38 System.out.println("\n--- Gästeliste (" + guestList.size() + " Gäste) ---");
39 for (Guest g : guestList) {
40 System.out.println(" - " + g);
41 }
42 }
43}
1public class PartyTest {
2 public static void main(String[] args) {
3 Party party = new Party();
4
5 // Drei Gäste auf einmal einladen
6 party.inviteGuests(
7 new Guest("Anna Müller", "anna@example.de"),
8 new Guest("Ben Schmidt", "ben@example.de"),
9 new Guest("Clara Weber", "clara@example.de")
10 );
11
12 System.out.println();
13
14 // Weiterer Aufruf mit einem Duplikat (gleiche E-Mail wie Anna)
15 party.inviteGuests(
16 new Guest("David Fischer", "david@example.de"),
17 new Guest("Anna M.", "anna@example.de") // Duplikat!
18 );
19
20 // Gesamte Gästeliste ausgeben
21 party.printGuestList();
22 }
23}