2017-05-15 3 views
0

Ich brauche einige helfen, ein Problem mit dem Schreiben von Booleschen Ausdrücken in meinem Code herauszufindenVariablen auf true gesetzt würden nicht in while-Schleife java

import java.util.*; 
import java.util.concurrent.ThreadLocalRandom; 

public class Dudo 

{ 

    public static void main(String[] args) 
    { 
     // raise call spot on pass 
     Scanner reader = new Scanner (System.in); 
     boolean player1; 
     boolean player2;   
     int dicep1 = 5; 
     int dicep2 = 5; 
     Random rand = new Random(); 
     int n = rand.nextInt(6) + 1; 
     int y = rand.nextInt(6) + 1; 
     System.out.println("Welcome to Dudo!"); 
     System.out.println("Rolling to see who goes first"); 
     { 

      if (n > y) 
      { 
       System.out.println("Player 1 goes first"); 
      } 
      else if (n < y) 
      { 
       System.out.println("Player 2 goes first"); 
      } 
      else if (n == y) 
      { 
       System.out.println("Player 2 goes first"); 
      } 
      int[] Array; 
      Array = new int [dicep1]; 
      for(int i=0;i<Array.length;i++) 
      { 
       Array[i] = randomFill(); 
      } 

      int[] Array2; 
      Array2 = new int [dicep2]; 
      for(int j=0;j<Array2.length;j++) 
      { 
       Array2[j] = randomFill2(); 
      } 
      player1 = true; 
      player2 = true; 


      while ((player1 == true) && (player2 == true)); 
      { 
       System.out.println("Player 1, your numbers are....." + Arrays.toString(Array)); 
       System.out.println("Player 2, your numbers are....." + Arrays.toString(Array2)); 
      } 
      if ((player1 = false) || (player2 = false)); 
      { 

      } 
     } 
    }    



    private static int randomFill2() 
    { 
     int randomNum = ThreadLocalRandom.current().nextInt(0, 6 + 1); 
     return randomNum; 
    } 

    private static int randomFill() 
    { 
     int randomNum = ThreadLocalRandom.current().nextInt(0, 6 + 1); 
     return randomNum; 
    } 

} 

player1 und player2 beide auf true:

player1 = true; 
player2 = true; 

Wenn der Code ausgeführt wird, erkennt die While-Schleife nicht, dass beide Variablen true sind und zeigt nicht die Ausgabe an, in diesem Fall die Zahlen, die die Spieler für ihre fünf Würfel gewürfelt haben

while ((player1 == true) && (player2 == true)); 
{ 
    System.out.println("Player 1, your numbers are....." + Arrays.toString(Array)); 
    System.out.println("Player 2, your numbers are....." + Arrays.toString(Array2)); 
} 

Ich habe versucht, die Art und Weise ändert es noch mehrere Male geschrieben ich nichts in der while Halterung Ausgang

Warum ist es das und wie ich es beheben kann tun bekommen kann?

+3

'while ((player1 == true) && (player2 == true));' - entferne das ';' – Eran

+0

Wow, vielen Dank, es war so einfach – JAKoharik

+0

Die eigentliche Frage ist, warum ist das in einer 'while' Schleife zu beginnen? – River

Antwort

2

Sie haben ein Semikolon nach Ihrer while Schleife (beachten Sie, das gleiche Problem tritt bei Ihrer folgenden if Anweisung). Dies bewirkt, dass der Schleifenkörper leer ist. Die Klammern hinterher einfach define a new scope.

z. Ihr Code wird behandelt wie:

while ((player1 == true) && (player2 == true)){/*do nothing*/} 
//in a new (nested) scope do: 
System.out.println("Player 1, your numbers are....." + Arrays.toString(Array)); 
System.out.println("Player 2, your numbers are....." + Arrays.toString(Array2)); 

nicht sicher, warum Sie diese Anweisungen in einer Schleife while haben allerdings überhaupt, sollte es wohl eine if Anweisung sein. Momentan werden diese Dinge für immer gedruckt, da nichts drinnen aus der Schleife ausbrechen kann ...

+0

@JAKoharik, wenn diese Antwort Ihr Problem gelöst hat, können Sie [akzeptieren] (http://stackoverflow.com/help/someone-answers) – River

Verwandte Themen