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

ifである間、2番目はすべきではありませんか?無限ループだと確信しています。そして、なぜあなたは最初の間に、よくすべてを使用しているのですか?

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]);
        }
    }

'number'は変更されないため、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 に答える