(math.random()*a);从double到int的可能有损转换

xtupzzrd  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(326)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

三年前关门了。
改进这个问题
在“intx=(math.random()*a)”行下面的代码中,我得到一个错误,在“*a)”处显示“不兼容类型:可能有损从double到int的转换”

`
import java.util.Scanner;
public class problem4 {
    public static void rollDice() {
        Scanner reader = new Scanner(System.in);
        System.out.println("How many random numbers should be generated?");
        int n = reader.nextInt();
        Scanner reader1 = new Scanner(System.in);
        System.out.println("What is the number of values for each random draw?");
        int a = reader.nextInt();
        for (int i = 0; i <= n; i++) {
            int x = (Math.random()* a);
            System.out.println("Random number "+i+" is "+x+".");
}}}`

我在bluej中使用java。

g2ieeal7

g2ieeal71#

改用这个
https://docs.oracle.com/javase/7/docs/api/java/util/random.html#nextint()

Random r = new Random ();
for (int x = 0; x < 5; x ++) {
    System.out.println(r.nextInt());
}

或者

System.out.println(r.nextInt(52)); to limit to a number
zynd9foi

zynd9foi2#

Math.random 返回一个 double . 然后你试着把它乘以 a 把它放进一个 int .
int 总是一个整数(没有小数点)。所以它告诉你,你在做那个操作(把它放回一个 int ).
你可以通过 xdouble . 或者如果你真的想要整数,你可以显式地强制转换 x 到一个 int 通过这样做: int x = (int) (Math.random() * a)

相关问题