好吧所以我正在尝试制作一个非常简单的数字生成器,其限制为1和100.我已经阅读了我在网上找到的所有内容,并且无法弄清楚为什么我的代码不记录1之间的数字数组中的-100然后打印数组中的数字。当我运行代码时,数字36会一遍又一遍地打印出来。我做错了什么?
import java.util.Random;
public class NumberGen
{
public static void main(String[] args)
{
int numbers[]=new int[10];
Random gen = new Random();
for(int i=0; i<numbers.length;i++)
{
int number=gen.nextInt();
while(number<1 || number>100)
{
number=gen.nextInt();
}
while(number<=100 && number >=1)
{
numbers[i]=number;
System.out.println(numbers[i]);
}
}
}
}
答案 0 :(得分:3)
不应该是第二个而不是if?我很确定这是一个无限循环。 你为什么要使用第一个,以及所有:
int number=gen.nextInt();
while(number<1 || number>100)
{
number=gen.nextInt();
}
当你可以只是int number = gen.nextInt(100)+1;
答案 1 :(得分:2)
你应该使用另一种nextInt
- &gt; http://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt(int)
在你的情况下:
int number=gen.nextInt( 100 ) + 1;
答案 2 :(得分:0)
考虑一下这里发生了什么:
for(int i=0; i<numbers.length;i++)
{
/**
*int number=gen.nextInt();
*while(number<1 || number>100)
*{
* number=gen.nextInt();
*}
**/
number = 1;
while(number<=100 && number >=1)
{
numbers[i]=number;
System.out.println(numbers[i]);
}
}
for循环中的while被卡在无限循环中,因为'number'永远不会改变
您应该尝试的是将数字存储在单个for / while循环中,然后单独打印/ while循环
for(int i=0; i<numbers.length;i++){
//FYI gen.nextInt(100) generates a int from 0 to 99
//store values
}
for(int i=0; i<numbers.length;i++){
//print values in arr
}