2017-02-23 9 views
-2

私はNimの少し基本的なゲームを作ろうとしています。私はJavaの初心者です。私がコードを実行すると、ちょうど2秒間実行され、私が求めていることをせずに停止します。それはおそらく単純な解決策ですが、私は尋ねなければなりませんでした。誰にも分かりますか?ここに私のコードです。Javaプログラムは何もせずに起動して停止します

import java.util.Scanner; 
import java.util.Random; 

public class Nim { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     Random rand = new Random(); 

     int playernum; 
     int cpunum = rand.nextInt(3)+1; 
     int gamenum = 21; 
     boolean win = false; 
     boolean turn = true; 

     while((win = false) && (turn = true)){ 
      System.out.println("The number is 21. Enter a number from 1 - 3"); 
      playernum = input.nextInt(); 

      int remaining = gamenum - playernum; 

      System.out.println("The number is now " + remaining); 
      turn = false; 

      if((turn = false) && (gamenum > 0)){ 
       System.out.println("Computer is thinking..."); 
       try { 
        Thread.sleep(3000); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 


      } 
     } 


    } 

} 
+2

比較に '=='を使用すると、割り当てに '='が使用されます。 – Jyr

+0

これは、 'turn == false'ではなく'!turn'を常にチェックする必要がある理由です。 – shmosel

+0

'while(!win && turn)'これに変更してみてください –

答えて

0

文やループのヘッダの場合のboolean変数を使用している場合、彼らはtrueまたはfalseに等しいかどうかをチェックする必要はありません、ちょうどそうのような変数に自分自身を使用し、

while(!win && turn){ 
    System.out.println("The number is 21. Enter a number from 1 - 3"); 
    playernum = input.nextInt(); 

    int remaining = gamenum - playernum; 

    System.out.println("The number is now " + remaining); 
    turn = false; 

    if(!turn && gamenum > 0){ 
    System.out.println("Computer is thinking..."); 
    try { 
     Thread.sleep(3000); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    } 
} 

また、別の問題の前に間違った演算子を使用していたブール変数をチェックしていたときでした=。プリミティブ型の間の等価性を比較するには、==を使用していたはずですが、ブール値は不要です。ブール変数がtrueかどうか確認したい場合は、ブール変数自体を条件として使用してください。ブール変数が 'false'であるかどうかを確認するには、条件内で!演算子を使用してブール変数の否定を使用します。

関連する問題