一尘不染

Java math.random,仅生成0?

java

以下代码仅产生0;-;

我究竟做错了什么?

public class RockPaperSci {

  public static void main(String[] args) {
    //Rock 1
    //Paper 2
    //Scissors 3
    int croll =1+(int)Math.random()*3-1;
    System.out.println(croll);
  }
}

编辑,另一张海报建议修复它。int croll = 1 +(int)(Math.random()* 4-1);

感谢大家!


阅读 494

收藏
2020-03-23

共1个答案

一尘不染

你正在使用Math.random()哪个州

返回double带有正号(大于或等于0.0并小于)的值1.0

你正在将结果转换为int,返回值的整数部分,即0。

然后1 + 0 - 1 = 0。

考虑使用 java.util.Random

Random rand = new Random();
System.out.println(rand.nextInt(3) + 1);
2020-03-23