Wie kann man bei java boolean werte von integern abfragen?

3 Antworten

Die Klasse "Quadrat" ist was, was ihr im Unterricht gebaut habt, daher kann ich natürlich nicht genau sagen, welche Methoden sie hat. Habt ihr eine Methode mit der Signatur "public boolean equals(boolean)" für die Klasse implementiert? Falls ja, wird das normalerweise nur benutzt, um einen Wert zu vergleichen, aber nicht um einen Wert in das Array zu schreiben.

Mit "new Quadrat[11][2]" legst du auch erstmal nur ein leeres Array an. Du müsstest da noch für jedes Element ein neues Quadrat-Objekt reinschreiben. Da ihr anscheinend eh nur mit boolean-Werten arbeitet, wäre es vielleicht geschickter, gleich ein boolean-Array zu benutzen.

So, wie ich die Aufgabenstellung verstehe, soll man mit einer 50:50 Wahrscheinlichkeit das jeweils erste Element auf true setzen und wenn es true ist, soll man wieder mit einer 50:50 Wahrscheinlichkeit das zweite Element auf true setzen. Bei deiner Variante wird aber per Zufall eins von beiden Elementen ausgesucht, das wird dann auf false gesetzt und dann wird geprüft, ob das erste Element false ist das jeweils andere auf true gesetzt.

Also einmal deine Variante so umgebaut, dass sie sich zumindest kompilieren lässt:

  public static void main(String[] args) {
    var feld = new boolean[2][11];
    var zufall = new Random();

    for (int i=0; i<11; i++) {
      if (zufall.nextInt(2) == 0) {
        feld[0][i] = false;
        feld[1][i] = true;
      } else {
        feld[0][i] = true;
        feld[1][i] = false;
      }
    }
  }

Und einmal die Variante, wie ich sie verstehe:

  public static void main(String[] args) {
    var feld = new boolean[11][2];
    var zufall = new Random();

    for (int i = 0; i < 11; i++) {
      if (zufall.nextBoolean()) {
        feld[i][0] = true;
        if (zufall.nextBoolean()) {
          feld[i][1] = true;
        }
      }
    }
  }

Deiner Beschreibung zufolge ist das Weiterkommen nichts, was über den Feldzustand ermittelt wird. Stattdessen wird bei jedem Feld neu ausgewürfelt.

Das heißt, du brauchst an sich nur eine Zufallszahl zwischen 0 (inklusiv) und 2 (exklusiv) ermitteln. Ob man nun weiterkommt, bemisst sich daran, ob die ausgewürfelte Zahl größer als 0 ist oder nicht.

Statt eines mathematischen Vergleichs könnte man ebenso die nextBoolean-Methode des Random-Objekts nutzen.

Hallo liebe*r hallo5r6875467,

ich bin mir nicht sicher, was genau Du meinst. Du kannst doch die Klasse Quadrat einfach um einen Boolean erweitern und fragst diesen dann ab?

if (feld[0].foo.equals(true))

Wenn das eine vorgegebene Klasse aus einer Library ist, kannst Du trotzdem eine eigene Klasse erstellen (einen Wrapper) und dort das Quadrat und den Boolean als Property hinzufügen.

Mit freundlichen Grüßen

Dultus