java - 首先Java : Target Random number is always zero

标签 java

我一直在尝试这段代码,使用 math.random() 生成的目标数字总是为零。代码有问题吗?请帮忙。我尝试了很多次,但每次尝试目标随机数始终为零。

public class Player {
    int number;

    public void guess()
    {
        number = (int) (Math.random()*10);
    }
}



public class GuessGame {
Player p1;
Player p2;
Player p3;

public void startGame()
{
    p1 = new Player();
    p2 = new Player();
    p3 = new Player();

    int targetNumber; 
    targetNumber = (int) Math.random() * 10 ;
    System.out.println("The target number is "+ targetNumber);


    while(true)
    {
        p1.guess();
        p2.guess();
        p3.guess();

        int guessp1 = p1.number;
        int guessp2 = p2.number;
        int guessp3 = p3.number;

        System.out.println("Number guessed by player p1 is "+ guessp1);
        System.out.println("Number guessed by player p2 is "+ guessp2);
        System.out.println("Number guessed by player p3 is "+ guessp3);

        boolean isp1 = false;
        boolean isp2 = false;
        boolean isp3 = false;

        if(targetNumber==guessp1)
            isp1 = true;
        if(targetNumber==guessp2)
            isp2 = true;
        if(targetNumber==guessp3)
            isp3 = true;
        if(isp1||isp2||isp3)
        {
            System.out.println("player1 got it right? " + isp1);
            System.out.println("player2 got it right? " + isp2);
            System.out.println("player3 got it right? " + isp3);
            System.out.println("Game Over!!!");
            break;
        }
        else
        {
            System.out.println("All Wrong!! Play Again..");
        }
    }

}

}

public class GameLauncher {
    public static void main(String[] args)
    {
        GuessGame game = new GuessGame();
        game.startGame();
    }
}

最佳答案

问题出在下面一行

targetNumber = (int) Math.random() * 10 ;

Math.random() 返回 0(包括)到 1(不包括)之间的 double 值,并且您将其转换为 int,在乘法之前将其变为零。

使用

targetNumber = (int) (Math.random() * 10 );

或者更好地使用

Random random = new Random();
number = random.nextInt(10);

关于java - 首先Java : Target Random number is always zero,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24969942/

相关文章:

java - 未注入(inject)带有 JPA2 的 Apache Ignite 2.7 IgniteRepository

java - EJB junit 测试的最佳模拟对象框架

java - 使用 Akka 处理文件?

java - 在 Firebase 中使用矩阵

java - 将 log4j 添加到类路径并仍然得到 java.lang.NoClassDefFoundError

java - 检测台球 table 上的球(条纹和实心)

javascript - Node js 中的身份验证过程中出现无效盐错误

java - 无效的 if 语句

当组合框获得焦点时,JavaFX 组合框不选择所有文本

java - 字符串的长度变化和保存长度不变的int