如何使用 Math.random 生成随机整数?
我的代码是:
int abc= (Math.random()*100);
System.out.println(abc);
它只打印出0,我该怎么修复它?
将 abc 转换为整数。
(int)(Math.random()*100);
为了使您的代码编译,您需要将结果强制转换为int。
int abc = (int) (Math.random() * 100);
然而,如果你使用 java.util.Random 类,它已经为你内置了方法。
Random random = new Random();
int abc = random.nextInt(100);
作为一种替代,如果没有特定的原因需要使用Math.random()
,可以使用Random.nextInt()
:
import java.util.Random;
Random rnd = new Random();
int abc = rnd.nextInt(100); // +1 if you want 1-100, otherwise will be 0-99.
你正在导入java.util
包。这就是为什么它会出错的原因。在java.util
包中也有一个random()
方法。请删除导入java.util
包的导入语句。然后你的程序将默认使用java.lang
的random()
方法,然后你的程序将正常工作。记得进行强制转换,即
int x = (int)(Math.random()*100);
int abc= (Math.random()*100);// wrong
您将会收到以下错误信息
Exception in thread "main" java.lang.Error: 未解决的编译问题:类型不匹配:无法从double转换为int
int abc= (int) (Math.random()*100);// add "(int)" data type
被称为类型转换
如果真实结果是
int abc= (int) (Math.random()*1)=0.027475
然后你会得到输出为“0”,因为它是一个整数数据类型。
int abc= (int) (Math.random()*100)=0.02745
输出结果为2,因为(100*0.02745=2.7456...等等)
你也可以使用以下方式获取1到100之间的随机数:
SecureRandom src=new SecureRandom();
int random=1 + src.nextInt(100);
double i = 2+Math.random()*100;
int j = (int)i;
System.out.print(j);
i
。 - user3932000
int abc= (int)Math.random()*101;
。 - GodMath.random()
呈现的意味着abc
将永远是0。你需要这样做:int abc = (int)(Math.random()*101);
- user3932000