2017-02-23 46 views
-2

我正在努力使Nim的基本遊戲。我是java的初學者。當我運行代碼時,它會運行一秒鐘,然後停止而不按照我的要求去做。這可能是一個簡單的解決方案,但我不得不問。有人有什麼主意嗎?這是我的代碼。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'而不是'turn == false'。 – shmosel

+0

'while(!win && turn)'變成這個,試試 –

回答

0

當使用布爾變量if語句和環頭,有沒有必要檢查它們是否等於truefalse,只需使用變量本身像這樣,

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',只需在條件中使用!運算符來使用布爾變量的否定。