# Array als Methoden Parameter



## Empured (25. Nov 2007)

Ich mal wieder...
Komme einfach nicht drauf.


```
public static void Ausgabe(int AnzahlSätze, String[] AusgabenArray){
		int AusgabenIndex = 1;
		
		int Gespräch = Random(1,AnzahlSätze);

		for (String Blubb: Ausgaben){
			if (AusgabenIndex == Gespräch){
				System.out.print("Gespräch definiert:" + Blubb);
				
			}
			AusgabenIndex++;
		}

public static int Random(int From, int To){
		final int RandomNumber = (int)(Math.random()*(To-From)) + From;
		return RandomNumber;
	}
```

Man soll die Methode Ausgabe() aufrufen können, die dann Zufallssätze ausgibt. Ich verstehe nur nich wie ich das 
hinkriege. 
Meine Idee war:

Ausgabe(3, "Hallo wie gehts", "hi du", Hallo du Nase");

Da kommt aber "The method Ausgabe2(int, String[]) in the type SpeakerHandler is not applicable for the arguments (int, String, String, String)"

Wie übermittel ich der Methode im Aufruf einen Array?


----------



## dieta (25. Nov 2007)

```
String[] einArray = {"Hallo wie gehts", "hi du", "Hallo du Nase"};
Ausgabe(3, einArray);
```
Du kannst die Anzahl der Einträge des Arrays übrigens über dasArray.length abfragen.


----------



## Empured (25. Nov 2007)

dieta hat gesagt.:
			
		

> Du kannst die Anzahl der Einträge des Arrays übrigens über dasArray.length abfragen.



Stimmt, danke. Umso ärgerlicher, dass ich die Methode nicht verwenden kann. Weil bis jetzt habe ich soviele If Abfragen wie Sätze und jedes mal nen Befehl für Output, was locker 10-20 Zeilen braucht statt 1-2.


----------



## tapioca (25. Nov 2007)

Empured hat gesagt.:
			
		

> Man soll die Methode Ausgabe() aufrufen können, die dann Zufallssätze ausgibt. Ich verstehe nur nich wie ich das
> hinkriege.
> Meine Idee war:
> 
> ...



hi. du willst ein String Array (also ein Array, das mehrere Strings aufnehmen kann) übergeben. aber was übergibst du der Methode denn?



> Ausgabe(3, "Hallo wie gehts", "hi du", Hallo du Nase");



das sind drei Strings, und kein String Array. so wie du die Methode aufrufst, müsste sie auch vier Parameter erwarten (int, String, String, String), sie erwartet aber nur 2 (int, String[]). genau das versucht dir nämlich auch die Fehlermeldung beizubringen.


----------



## Empured (25. Nov 2007)

Naja, wie mach ich das dann?
In nem anderen Fall hats ähnlich geklappt:


```
String[] EingegebeneWoerter;
EingegebeneWoerter = BenutzerEingabe.split(" ");
```
Hier werden auch die einzelnen Wörter als Strings an den Array weitergegeben. Und es funktioniert. 
Irgendjemand eine Idee wie ich das jetzt bewerkstelligen kann?


----------



## dieta (25. Nov 2007)

Naja, String.split(...) liefert schon ein String-Array zurück.
Wenn dir die von mir oben geschriebene Lösung zu umständlich ist, kannst du mit einer variablen Parameterliste arbeiten:

```
public static void Ausgabe(String... ausgabenArray)
{
	System.out.print("Gespräch definiert:" + ausgabenArray[random(0, ausgabenArray.length)]);
}

public static int random(int From, int To){
      return (int)(Math.random()*(To-From)) + From;
}
```
Der Aufruf mit einzelnen Strings als Argumenten funktioniert dann, da die JVM diese in ein Array packt. Die übergebene Variable ist also ein String-Array.

```
Ausgabe("Hallo wie gehts", "hi du", Hallo du Nase");
```

Diese umständliche for-Schleife kannst du komplett weg lassen, du kannst über den Index auch direkt auf den String zugreifen.


----------



## Empured (25. Nov 2007)

dieta hat gesagt.:
			
		

> Naja, String.split(...) liefert schon ein String-Array zurück.
> Wenn dir die von mir oben geschriebene Lösung zu umständlich ist, kannst du mit einer variablen Parameterliste arbeiten:
> 
> ```
> ...



Oh man, ist ja logisch. Du bist ein Genie, danke 
Ich hab jetzt den ganzen Tag an einem gewaltigen strukturellen Problem geknobelt und du hast es gelöst, danke danke danke


----------

