1

好的,所以我正在尝试制作一个非常简单的数字生成器,限制为 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]);
            }


        }


    }

}
4

3 回答 3

3

第二个while不应该是if吗?我很确定这是一个无限循环。以及您为什么要使用第一个时间,所有这些:

int number=gen.nextInt();
            while(number<1 || number>100)
            {
                number=gen.nextInt();
            }

当你可以 int number=gen.nextInt(100)+1;

于 2013-03-10T00:19:43.790 回答
2

您应该使用另一种风格nextInt-> http://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt(int)

在你的情况下:

int number=gen.nextInt( 100 ) + 1;
于 2013-03-10T00:16:57.940 回答
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 卡在无限循环中,因为“数字”永远不会改变

您应该尝试做的是将数字存储在单个 for/while 循环中,然后在单独的 for/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
}
于 2013-03-10T00:22:45.963 回答