0

2つの乱数の平均を取得しようとしています。平均は30で、最初の数値は2番目の数値よりも小さい必要があります。しかし、私はループ機能で立ち往生しています。

public static void main(String[] args) {
    Scanner user_input = new Scanner(System.in);
    String respond;
    System.out.println("enter OK");
    respond = user_input.next();
    randomAverage();

}

public static void randomAverage(){
    Random random = new Random();
    int average = 30;
    int a = random.nextInt(100); //random range
    int b = random.nextInt(100);
    System.out.println("random a " +a);
    System.out.println("random b "+b);
    while(a>b){
        a = random.nextInt(100); //random range
        b = random.nextInt(100);
        System.out.println("random a " +a);
        System.out.println("random b "+b);
    }
    int c = (a+b)/2;
    while (c>average || c<average){
        a = random.nextInt(100); //random range
        b = random.nextInt(100);
        System.out.println("random a " +a);
        System.out.println("random b "+b);
    }
}

上記の機能を試しましたが、データが冗長になりました

誰でも私を助けることができます

私はこの言語を学び始めたばかりです

4

3 に答える 3

1

2番目の値は最初の値によって決定されるため、ループは必要ありません。最小値の範囲は0〜30で、2番目の値の範囲は30〜60です。

int first = rand.nextInt(31);
int second = 60 - first;

これにより、平均30の2つの値が得られ、最初の値が低くなります。

于 2013-01-05T08:46:44.773 に答える
1

の値を更新することはありませんc

2番目のループは次のようになります。

int c = (a+b)/2;
while (c != average) {              // Simpler conditional
    a = random.nextInt(100);
    b = random.nextInt(100);
    c = (a+b)/2;                    // Must update this.
    System.out.println("random a " +a);
    System.out.println("random b "+b);
}

ラダイが述べたように注意してください、

以来(a+b)/2 = 30、あなたが知っているaならあなたはのために解くことができますb。単純な場合、CPUサイクルを焼き付ける意味はありませんb = 60 - a

于 2013-01-05T05:33:09.177 に答える
0

do-while以下のようにループを使用します。

    do{
         a = random.nextInt(100);
         b = random.nextInt(100);
         c = (a+b)/2; 
    }while(c != 30 || a >=b);
    System.out.println("random a " +a);
    System.out.println("random b "+b); 

は分数が省略されているため、正しく計算されていないことに注意してください。cたとえば、a=25およびb=36の場合、実際の平均は30.5ですが、cは30になります。

編集:最良の解決策は、以下のように1つの乱数を導出し、ループなしで2番目の乱数を導出することです。

    a = random.nextInt(60);
    b = 60 - a;
    System.out.println("random a " +a);
    System.out.println("random b "+b); 

最初の数はランダムなので、2番目はランダムに導出されます:)

于 2013-01-05T05:42:57.267 に答える