JAVA Zufallsgenerator

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Hey,


    ich wollte gerne ein Programm schreiben, welches durch einen Klick auf einen Button dir sagt was für eine Art Mensch man ist (Held, Idiot, Glückskind, etc.) mit Hilfe von vorgegebenen Wörtern halt, also keine richtigen Zufallszahlen, sondern der soll sich eins von den vorgegebenen Namen raussuchen und ausgeben, also soweit dass er einen Namen ausgibt bin ich schon, nur ich weiß nicht genau wie ich mehrere einfügen soll.


    Soll für mich nur als reine Übung gelten, also steckt kein tieferer Sinn hinter. Ich denke mal ich muss nen Array da reinhauen, aber kann das nur mit Zahlen, mit Zeichen habe ich das irgendwie noch nicht raus.


    Hier ist der Code dafür, und danke schonmal.


    :pika: Mein 3DS Freundescode: 2895 - 7146 - 5025 :pika:


    Suche Freunde für Pokémon Rumble Wolrd


    Abenteuerrang: 30


    Gefangene Arten: 229
    1. Partner: Palkia 1067 Palkia
    2. Partner: Xerneas 1058 Xerneas

  • Du erstellst GUIs, aber weißt nicht, wie man sich Zufallszahlen erstellt um "zufällige" Strings aus einem Array zu lesen?
    Erstelle ein String-Array in das du wahlweise die kompletten anzuzeigenden Strings oder nur den Teil, der sich unterscheidet ablegst, würfelst mit der rand()-Funktion (heißt die in Java überhaupt so?) eine Zufallszahl aus dem Bereich 1 bis Array-Länge und fügst dann den Inhalt des Arrays am erwürfelten Index in dein Label ein. Wie man ein Array erstellt findest du bitte selbst raus, wozu gibt's Google?

  • Die Zahlen sollen ja offenbar nicht echt zufällig sein, sondern (vermutlich) bei gleichen Namen den gleichen Wert zurückgeben. Dazu kannst du aus dem eingelesenen String einen Hashcode bilden und daraus wiederrum den Wert im Array ermitteln. Eine simple Beispielimplementierung sähe z.B. so aus:

    Code
    String[] texts = { "Held", "Vollidiot" };
            String text = jTextField.getText();
            int i = text.hashCode() % texts.length;
            jLabel1.setText("Du bist ein " + texts[i]);


    Das benutzte JTextField muss natürlich noch entsprechend eingefügt werden.
    Das Array mit den Begriffen kann man auch an sinnvolleren Stellen initialisieren, aber fürs Beispiel passt das erstmal.

  • Sollte es tatsächlich zufällig sein, welcher String aus dem Array gepickt wird, eine kleine Methode die so etwas tut

    Code
    public String getRandomString (){
        String [] S = {"Held", "was anderes"};
        // Zufälliger int zwischen 0 (inklusiv) und der Länge des Arrays (exklusiv)
        int i = new java.util.Random().nextInt(S.length); 
        return S[i];
    }
  • Perfekt, das hat geholfen und es läuft nun Wunderbar :D


    Vielen vielen dank an euch.

    :pika: Mein 3DS Freundescode: 2895 - 7146 - 5025 :pika:


    Suche Freunde für Pokémon Rumble Wolrd


    Abenteuerrang: 30


    Gefangene Arten: 229
    1. Partner: Palkia 1067 Palkia
    2. Partner: Xerneas 1058 Xerneas

  • Bessere Version, da ein Java-Random nur Pseudo-Zufall ist:
    oben im Code import java.util.Random
    irgendwo Random rand = new Random();
    dann brauchst du ein Array mit allen Namen String[] names = new String[]{"Mensch", "Held"};
    und an der stelle dann String name = names[rand.nextInt(names.length)];
    Weil wenn du Proht Meyhets Vorschlag nimmst, hast du immer den gleichen String(wenn du wissen willst warum: schau dir den source code der random klasse an)