Hat der Code die selbe Funktion?

Aufrufe: 118     Aktiv: vor 2 Wochen, 4 Tagen

0

Hallo, Ich möchte momentan mir etwas Java selbst beibringen, nur das grundlegendste. Ich verwende dafür eine Webseite auf der mehrere Aufgabenstellungen sind, die mit der Zeit komplexer werden und aufeinander aufbauen. Nun war die Aufgabenstellung wie folgt:

Errechne wie oft gewürfelt werden muss, um zwei aufeinanderfolgende 6er zu würfeln. Verwende hierzu zwei ineinandergeschachtelte Endlosschleifen. Gebe nach jeder ersten gewürfelten 6 die Anzahl der für diese eine 6 benötigten Versuche aus. Würfel ein weiteres Mal und überprüfe die Anzahl der gewürfelten Augen. Springe mit continue an den Anfang der ersten Schleife, falls es keine 6 ist. Beende beide Schleifen mit break falls die zweite 6 gewürfelt wurde.

Der Code in der Lösung sieht wie folgt aus:

class Aufgabe9 {
  public static void main(String[] args) {
    int totalCounter = 0;
    stop: {
      start:
      while(true) {
        int counter = 0;
        while(true) {
          counter++;
          int number = 1 + (int)(Math.random() * 6);
          if(number == 6) {
            System.out.println("Für die erste 6 wurden " + counter + " Versuche benötigt.");
            number = 1 + (int)(Math.random() * 6);
            totalCounter = totalCounter + counter + 1;
            if(number == 6)  {
              break stop;
            }
            continue start;
          }
        }
      }
    }
    System.out.println("Für zwei aufeinanderfolgende 6er wurden " + totalCounter + " Versuche benötigt.");
  }
}

Ich selbst bin der Aufgabenstellung zwar nicht ganz korrekt gefolgt, da ich keine zwei Schleifen verwendet habe sondern nur eine, wollte dennoch fragen ob mein Code die selbe Funktion hat und gleich funktioniert oder nicht und wie ich das am besten überprüfen kann, (Testwerte irgendwie möglich?)

Mein Code sieht wie folgt aus:

public class Program {

    public static void main(String[] args) {

        int totalCount = 0;
        int number1;

        while (true) {

            number1 = 1 + (int)(Math.random() * 6);
            totalCount++;

            if (number1 == 6) {

                number1 = 1 + (int)(Math.random() * 6);
                totalCount++;

                if (number1 == 6) {
                    System.out.println("Es wurde " + totalCount + " mal gewürfelt bis zwei Sechser hintereinander gewürfelt wurden");
                    break;

                }
                else {
                    continue;

                }
            }
        }   
    }
}
gefragt vor 3 Wochen, 4 Tagen
l
leolkr,
Schüler, Punkte: 10

 
Kommentar schreiben Diese Frage melden
1 Antwort
0

Hi, die Bestimmung der Würfe für die zwei 6en hintereinander funktioniert zu der obigen Lösung identisch. Zusätzlich werden oben halt noch die Würfe bis zu einer 6, wobei das Zählen immer wieder bei 0 beginnt (deshalb auch der extra counter), ausgegeben. Trotzdem ist die Lösung dafür sehr unübersichtlich (wahrscheinlich ging es darum break und continue mit Labels zu lernen?) und man könnte das recht einfach in deine Lösung mit einbauen:

  public static void main(String[] args) {
    int totalCount = 0;
    int counter = 0;
    int number1;

    while (true) {
        number1 = 1 + (int)(Math.random() * 6);
        totalCount++;
        counter++;

        if (number1 == 6) {
            System.out.println("Für die erste 6 wurden " + counter + " Versuche benötigt.");
            number1 = 1 + (int)(Math.random() * 6);
            totalCount++;
            counter = 0;

            if (number1 == 6) {
                System.out.println("Es wurde " + totalCount + " mal gewürfelt bis zwei Sechser hintereinander gewürfelt wurden");
                break;
            }
        }
    }
}
geantwortet vor 2 Wochen, 4 Tagen
younglord1337
Student, Punkte: 10
 
Kommentar schreiben Diese Antwort melden