Programmiertechnik Einschub: Variable

Werbung
Prof. Dr. Oliver Haase
Karl Martin Kern
Achim Bitzer
Programmiertechnik
Einschub: Variable Argumentenanzahl
Motivation
●
●
Gesucht: Eine Methode, mit der 2, 3, 4, … Zahlen miteinander
summiert werden können.
Option 1 (Überladung): schreibe n verschiedene Varianten der
Methode summiere, für 2, 3, 4, … Parameter:
public static int summiere(int a, int b) {
return a + b;
}
public static int summiere(int a, int b, int c) {
return a + b + c;
}
public static int summiere(int a, int b, int c,
int d) {
return a + b + c + d;
}
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
Achim Bitzer, Seitenbau GmbH
2/7
Motivation
●
Option 2: Übergeben der Parameter als Feld:
public static int summiere(int[] werte) {
int summe = 0;
for ( int i = 0; i < werte.length; i++ )
summe += werte[i];
return summe;
}
oder (unter Verwendung einer vereinfachten Schleife):
public static int summiere(int[] werte) {
int summe = 0;
for ( int wert : werte )
summe += wert;
return summe;
}
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
Achim Bitzer, Seitenbau GmbH
3/7
Motivation
●
●
Nachteil: Der Aufrufer muss die zu summierenden Zahlen vor dem
Aufruf der Methode summiere in ein Feld verpacken.
Beispiel: Bilde die Summe der Zahlen 1 bis 5:
int[] werte = new int[5];
for ( int i = 0; i < werte.length; i++ ) {
werte[i] = i + 1;
}
int summe = summiere(werte);
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
Achim Bitzer, Seitenbau GmbH
4/7
variable Argument-Anzahl
●
In Java 5 kann der letzte Parameter einer Methode als variabel
deklariert werden. Dies geschieht mit der folgenden Syntax:
Syntaxregel
<Typ>... <VariablenName>
●
●
●
Der Aufrufer kann beliebig viele Parameter des entsprechenden Typs
übergeben (auch gar keinen).
Java verpackt diese bei der Übergabe automatisch in ein Feld.
Die aufgerufenen Methode greift auf ein Feld namens
<VariablenName> mit Komponententyp <Typ> zu.
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
Achim Bitzer, Seitenbau GmbH
5/7
variable Argument-Anzahl
●
Beispiel:
public static int summiere(int... werte) {
int summe = 0;
for ( int wert : werte )
summe += wert;
return summe;
}
●
Aufruf:
int summe = summiere(1, 2, 3, 4, 5);
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
Achim Bitzer, Seitenbau GmbH
6/7
variable Argument-Anzahl
●
●
Frage: Warum geht das nur für den letzten Methodenparameter?
Antwort: Weil Java sonst Schwierigkeiten haben könnte, zu
unterscheiden, ob ein übergebener Wert noch zu einem variablen
Argument gehört, oder schon den nächsten Parameter darstellt.
Prof. Dr. Oliver Haase, HTWG Konstanz
Karl Martin Kern, Seitenbau GmbH
Achim Bitzer, Seitenbau GmbH
7/7
Herunterladen