Hallo ich will das die Array-Liste zufällig ausgegeben wird, aber jedes Tier soll nur ein einziges mal ausgegeben werden.
Code:
package x;
import java.util.Random;
public class ausgabe {
public static void main(String[] args){
String[] liste = { "Katze", "Hund", "Maus"};
Random b = new Random();
for(int r=0;r<3; r++){
int a = b.nextInt(2)+1;
System.out.println(liste[a]);
}}
}
Dann musst du dir speichern welche Indexe du schon ausgegeben hast.
Und solange ein neuen Wert für 'a' berechnen bis du einen gefunden hast der noch nicht ausgegeben wurde.
Wenn du mehrere Sachen speichern willst brauchst du entweder eine Liste oder ein Array
du könntest zum Beispiel ein weiteres Array verwenden welches so groß wie deine Array ist.
Alle Werte im Array sind am Anfang -1 oder 0 .... wenn du etwas aus deiner Liste ausgibst änderst du den Wert in diesem 2ten Array auf etwas > 0.
Jetzt musst du solange einen neuen Index suchen bis du für diesen Index im 2ten Array einen Wert <= 0 hast. Dann wurde das Element noch nicht ausgegeben usw.
So zum Beispiel. Bitte die Kommentarre im Code durchlesen und bei Verständisfragen melden.
Java:
importjava.util.Random;publicclassUniqueRandomizer{publicstaticvoidmain(String[] args){String[] liste ={"Katze","Hund","Maus","Kuh","Pferd","T-Rex"};Random r =newRandom();int anzahlInArray = liste.length;// Länge der Listeboolean[] schonAusgegeben =newboolean[anzahlInArray];//Alle Felder initialisiert mit "false"int anzahlAusgaben =0;//Anzahl der schon ausgegebenen Felder aus liste//Solange noch nicht alle Einträge ausgegeben wurdenwhile(anzahlAusgaben < anzahlInArray){//neuen zufälligen aktuellen Index beschaffenint aktuellerIndexZumTesten = r.nextInt(anzahlInArray);//Falls Wert aus liste am aktuellen Index noch NICHT ausgegeben wurdeif(!schonAusgegeben[aktuellerIndexZumTesten]){//Den Wert aus liste am aktuellen Index ausgebenSystem.out.println(liste[aktuellerIndexZumTesten]);//Im array "schonAusgegeben" marrkieren, dass am aktuellen Index schon was ausgegeben wurde
schonAusgegeben[aktuellerIndexZumTesten]=true;//und die Anzahl der Ausgaben um eins erhöhen
anzahlAusgaben++;}}}}