1

Java で範囲 0..99 の 2 つの数値を生成したいのですが、繰り返さないようにする必要があります。以下のコードを試しましたが、うまくいきません。

    int number1 = randomGenerator.nextInt(100);
    int number2 = randomGenerator.nextInt(100);

    if(number1 == number2){
        while (number1 != number2){
            number2 = randomGenerator.nextInt(100);
        }
    }
4

4 に答える 4

4

number1とが等しい場合number2、それらは等しくありませんwhileループを変更するだけです:

int number1 = randomGenerator.nextInt(100);
int number2 = randomGenerator.nextInt(100);

while(number1 == number2){
    number2 = randomGenerator.nextInt(100);
}
于 2013-11-03T10:51:24.610 に答える
1

条件が間違っているため、ループに入らないため、機能していません。==ループでは、 ではなくが必要です!=。次のものを削除することもできますif

int number1 = randomGenerator.nextInt(100);
int number2 = randomGenerator.nextInt(100);

while (number1 == number2){
    number2 = randomGenerator.nextInt(100);
}
于 2013-11-03T10:51:28.417 に答える
0

すべてが一意である必要がある場合は、結果をリストに追加する必要があります。次に、現在の乱数を過去の各結果と比較できます。

    Random random = new Random();
    int number1 = random.nextInt(100);
    int number2 = random.nextInt(100);
    List<Integer> randomsList = new ArrayList<Integer>();

    while (randomsList.contains(number1)){
        number1 = random.nextInt(100);
    }
    randomsList.add(number1);

    while (randomsList.contains(number2)){
        number2 = random.nextInt(100);
    }
    randomsList.add(number2);
于 2013-11-03T11:07:55.780 に答える
0
int number1 = randomGenerator.nextInt(100);
int number2 = randomGenerator.nextInt(99);
if(number2 >= number1) {
  ++number2;
}

また、セットで指定されたものとは異なるランダムインデックスを生成するでそれに関する議論を確認してください

于 2013-11-03T10:53:03.193 に答える