2017-05-15 8 views
0

私はいくつかの私のコード変数は、文句を言わないのwhileループの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にブール式を書くことで問題を考え出す助けとplayer2がtrueに両方が設定されている必要があります。

player1 = true; 
player2 = true; 

コードが実行されると、whileループは変数が両方ともtrueであることを認識せず、出力を表示しません。この場合、5つのダイスのロール数が表示されます

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)); 
} 
は、私はまだ私が

は、なぜそれがこれをやっている出力にwhileブラケット内部の何かを得ることができないと私はそれをどのように修正することができ、複数回書かれている方法を変更しようとしましたか?

+3

'while((player1 == true)&&(player2 == true));' - を削除します;; – Eran

+0

大変ありがとうございました。それは簡単でした。 – JAKoharik

+0

本当の質問は、なぜこれがwhileループで始まるのですか? – River

答えて

2

whileループの後にセミコロンがあります(この問題は、次のifステートメントで発生します)。これにより、ループ本体が空になります。その後の括弧は単にdefine a new scopeです。

など。

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)); 

ないあなたがが全くwhileループ内でこれらのステートメントを持っている理由、それはおそらくif文でなければならないことを確認:あなたのコードは次のように扱われます。現在のところ、これはループの中から抜け出すためのものが何もないので永遠にこれらのものを出力します...

+0

@JAKoharik、この答えがあなたの問題を解決した場合、あなたは[それを受け入れる]ことができます(http://stackoverflow.com/help/someone-answers) – River

関連する問題