2017-02-23 43 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',只需在条件中使用!运算符来使用布尔变量的否定。