我使用下面的Java代码使用math.random函数生成随机数
public class randomnumber {
public static void main(String[] args) {
// TODO Auto-generated method stub
int num = generatenumber(35);
while(num>0 & num < 35) {
System.out.println(num);
break;
}
//System.out.println("greater");
}
public static int generatenumber(int n) {
double d= Math.random() * 100;
int x = (int)d;
//System.out.println(x);
return x;
}
}
但是,当数字大于35时,输出不会显示。我希望程序打印直到num
小于35.我应该更改哪些内容才能执行此操作?
澄清:
每次Math.random()生成一个随机数。在第一次调用时,如果生成的数字大于35,那么我希望再次调用此函数“生成数字”,以便下次如果数字小于35,则打印该数字。
答案 0 :(得分:1)
您写道:
int num=generatenumber(35);
while(num>0 & num < 35)
{
System.out.println(num);
break;
}
您的意思是多次生成和测试,但事实上,根据num
的值,您在循环中传递零次或一次。
根据您的&#34;规格&#34;正确的代码是
int num;
while(true)
{
num = generatenumber(35);
System.out.println(num);
if (num>0 && num < 35) // note the double &&: logic and not arithmetic
{
break;
}
}
一般说明:虽然带有条件的循环大部分时间比使用true
更复杂。您必须考虑初始化和终止条件,有时是相同的。太多的复制/粘贴和错误...
do/while
:,shmosel建议更好
int num;
do
{
num = generatenumber(35);
System.out.println(num);
}
while (num>0 && num < 35); // note the double &&: logic and not arithmetic
答案 1 :(得分:1)
有三个错误:
答案 2 :(得分:0)
您可以使用以下代码。
public static void main(String[] args) {
int num = ThreadLocalRandom.current().nextInt(100);
for (; num > 35; num = ThreadLocalRandom.current().nextInt(100)) {
System.out.println(num + " is ignored");
}
System.out.println(num + " is ok");
}