Bräuchte da mal Hilfe!



  • Hallo zusammen,

    Ich versuche gerade ein Java-Programm zu schreiben, das 5 Augenzahlen eines Würfels einliest (sprich 5 würfe).

    Es soll mir dannach sagen ob folgende Figuren gewürfelt wurden:

    **Grand - Gleiche Augenzahl auf allen würfeln

    Poker gleiche Augenzahl auf 4 Würfeln

    Full House 3 gleiche und 2 gleiche Augenzahlen

    Sequenz - fortlaufende Folge 1,2,3,4,5 oder 2,3,4,5,6

    Ich soll ein Boolean und ein Integer Array benutzen.**

    Ich bin jetzt soweit, dass ich glaube den Grand mit folgenden Ausdruck abfragen zu können:

    ich nenne das int-array z.B.

    a[5]
    if (a[0] == a[1] && a[0]== a[2] && a[0]== a[3] && a[0]== a[4] )
    
    printf("Sie haben einen Grand gewürfelt");
    

    bei der Sequent würde ich es auch so ähnlich machen. Ich würde 4 mal ne if-verzweigung machen und fragen ob das erste element im Array =1 ist, das 2. = 2 usw.

    Was ich aber überhaupt nicht verstehe ist:

    1. Wozu brauche ich ein Boolean Arry in diesen Fall?

    2. Wie könnte ich "poker" und "full house" abfragen ?

    Danke schonmal für eure Hilfe im Vorraus!



  • Welches Boolean-Array, du hast ein int-Array?

    Einen Poker kannst du doch sehr einfach abprüfen, 4 Werte müssen zumindest den selben Wert haben. Wenn du dir große Vergleiche sparen willst kannst du ja ein zweites Array benützen:

    int[] wuerfel = new int[5];
    int[] augenzahlen = new int[6];
    
    // alles initialisieren
    
    // gewürfelte augenzahlen prüfen und eintragen
    for(int i = 0; i < 5; ++i)
        ++augenzahlen[wuerfel[i]];
    
    // auf full-house prüfen
    bool drei_gleiche = false;
    bool zwei_gleiche = false;
    for(int i = 0; i < 6; ++i)
    {
        if(augenzahlen[i] >= 3) drei_gleiche = true;
        else if(augenzahlen[i] >= 2) zwei_gleiche = true;
    }
    

    Nur so als Denkansatz, ungeprüfter Code 🙂

    MfG SideWinder



  • SideWinder schrieb:

    int[] wuerfel = new int[5];
    int[] augenzahlen = new int[6];
    
    // alles initialisieren
    
    // gewürfelte augenzahlen prüfen und eintragen
    for(int i = 0; i < 5; ++i)
        ++augenzahlen[wuerfel[i]];
    
    // auf full-house prüfen
    boolean drei_gleiche = false;
    boolean zwei_gleiche = false;
    for(int i = 0; i < 6; ++i)
    {
        if(augenzahlen[i] >= 3) drei_gleiche = true;
        else if(augenzahlen[i] >= 2) zwei_gleiche = true;
    }
    

    In Java heißt es nicht bool drei_gleiche sondern boolean drei_gleiche.

    Will die Aufgabenstellung vielleicht, dass du in einem boolean-Array speicherst, ob die Zahlenwerte gleich sind und dann in der if-Abfrage die booleans verwendest?

    boolean b[]=new boolean[5];
    int a[]=new int[5];
    
    b[0]=a[0]==a[1];
    b[1]=a[1]==a[2];
    b[2]=a[2]==a[3];
    b[3]=a[3]==a[4];
    b[4]=a[4]==a[5];
    
    //foreach um alle Array-Elemente durchzugehen, funktioniert erst ab Java 5
    boolean erg=true;
    for(boolean bo:b){
        erg=(erg&&bo); //wenn irgendein bo false ist wird erg false
    }
    

    soweit fürs grand...


Anmelden zum Antworten