# String per Zufall auswählen



## Gast (14. Nov 2005)

Also ich hab ein Array (zumindest glaub ich dass es eins ist) mit

```
tiere = new String [] {"Hund", "Katze", "Maus"}
```

Davon will ich sozusagen eine kleine "Herde" mit 20 versch. Tieren, die per Zufall 
aus diesen 3 ausgewählt werden erstellen.

Ich hab leider keine Ahnung ob ich das mit einem Random Befehl hinbekommen kann,
oder ob sowas viel komplizierter ist.

Danke im voraus für hilfreiche Antworten


----------



## Landreas (14. Nov 2005)

Random r = new Random ();
String herde = new String [20];

for (int i = 0; i < tiere.length; i++)

{
     herde_ = tiere[r.nextInt () % tiere.length];
}

die Klasse Random befindet sich im Package Java.util das du zuvor importieren musst_


----------



## Oni (14. Nov 2005)

wie sieht den dein code bisher aus. du lernst nicht viel, wenn wird hier gleich die lösung posten.

versuch erstmal selbst wie weit du kommst, so schwer ist das nicht
---
Math.random()


----------



## Gast (14. Nov 2005)

also so siehts inzwischen aus, aber hab wohl irgendwo noch nen fehler drin weil ich immer ein tier und dann 19 mal null ausgegeben bekomm


```
import java.util.Random;

class Herde{

  public static void main (String[] args){

    String[] tiere;

    tiere = new String[] { "Hund", "Katze", "Maus", "weisses Schaf", "schwarzes Schaf"};

    
	//Zusammenstellen
    
        String [] herde = new String [20];

    	Random rand = new Random ();

        for (int i=0; i<tiere.length; i++){
    	herde [i] = tiere[rand.nextInt () % tiere.length];

         //Ausgabe
   	 for (i=0; i<herde.length; i++){
    	 System.out.print(herde[i]+" ");

}   
} 
}
}
```

[/code]


----------



## Oni (14. Nov 2005)

guck mal wie du die klammern gesetzt hast.  die 2te schleife ist in der ersten.  probiers mal so


```
import java.util.Random;

class Herde{

  public static void main (String[] args){

    String[] tiere;

    tiere = new String[] { "Hund", "Katze", "Maus", "weisses Schaf", "schwarzes Schaf"};

   
   //Zusammenstellen
   
        String [] herde = new String [20];

       Random rand = new Random ();

        for (int i=0; i<tiere.length; i++){
          herde [i] = tiere[rand.nextInt () % tiere.length];
       }

         //Ausgabe
       for (int i=0; i<herde.length; i++){
         System.out.print(herde[i]+" ");
      }

   }
}
```


----------



## Gast (14. Nov 2005)

hab die Klammer korrigiert und auch das "int i=0" in Zeile 24 was ich vorher nicht hatte,
allerdings bekomm ich jetzt nen anderen Fehler:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -4
at Herde.main(Herde.java:21)

sowas ähnliches hatte ich glaub schon mal was sich durch ein -1 hinter length lösen ließ,
aber das scheint wohl was anderes zu sein


----------



## Oni (14. Nov 2005)

ich weiss das der code nicht läuft.

du willst doch 20 tiere haben. dann guck mal wie oft du die erste schleife durchläufst und wieviel tiere du deshalb nur hast.

und deinen random berechnung stimmt auch noch nicht ganz


----------



## Gast (14. Nov 2005)

```
for (int i=0; i<herde.length; i++){
    	herde [i] = tiere[rand.nextInt () % tiere.length];}
```

das müsste doch jetzt passen mit "herde.length" oder nich?
aber das mit der random berechnung is mir immer noch nich klar :/


----------



## Gast (14. Nov 2005)

ich denk jetzt hab ichs: 


```
for (int i=0; i<herde.length; i++){
    	herde [i] = tiere[rand.nextInt (20) % tiere.length];}
```

sieht auf jeden fall richtig aus was jetzt ausgegeben wird

danke euch


----------



## Oni (14. Nov 2005)

sieht gut aus  :applaus: 


hättest auch so lösen können. 

 tiere[rand.nextInt (tiere.length)]


----------

