0

我试图获得 2 个随机数的平均值。平均值应为 30,第一个数字应小于第二个数字。但是,我被困在循环功能中。

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

您永远不会更新c.

您的第二个循环应该类似于:

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

注意radai 提到的,

既然(a+b)/2 = 30,如果你知道a你可以解决b。简单地烧 CPU 周期是没有意义的b = 60 - a

于 2013-01-05T05:33:09.177 回答
1

您不需要循环,因为第二个值由第一个值确定。最小值的范围是 0 到 30,第二个值的范围是 30 到 60。

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

这将为您提供两个平均值为 30 的值,其中第一个较低。

于 2013-01-05T08:46:44.773 回答
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,c 将为 30,但实际平均值为 30.5。

编辑:最好的解决方案可能是导出一个随机数,然后只导出第二个没有任何循环,如下所示:

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

由于第一个数字是随机的,第二个是随机派生的:)

于 2013-01-05T05:42:57.267 回答