【问题标题】:Random Average Number Not Working in Java随机平均数在 Java 中不起作用
【发布时间】:2020-05-05 08:43:48
【问题描述】:

我需要找到随机数 (1-9) 的平均值,然后找到高于平均值的随机数数量。

我找到了平均值,并试图找到高于平均值的数字数量,但它一直给我错误的答案。


public class AverageRandom{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.print("n? ");
        int amount = sc.nextInt();

        Random randNo = new Random();
        double sum = 0;
        int max = 9;
        double average = 0;
        int above;
        above = 0;

        for(int i = 0; i < amount; i++){
            int next = randNo.nextInt(max) +1;
            System.out.print(next + " ");

            sum += next;
            average = sum/amount;

            if(next > average){
                above++;
            }
        }

        System.out.println("\nAverage = " + average);
        System.out.print("Number of values above the average = " + above + "\n");
    }
}

【问题讨论】:

  • 你的逻辑有点不对。在查看所有数字之前,您如何期望知道平均值是多少?你不能有明显的原因。因此,您需要首先遍历所有输入的数字以确定平均值。一旦你有了你的平均值,你就可以再次查看你的数字,看看哪些高于/低于平均值。你目前正在做的事情是在你完成计算平均值之前检查一个数字是否高于/低于平均值。
  • “我找到了平均值”,在每次迭代中打印 average 值。你会发现哪里出了问题
  • @OHGODSPIDERS 所以我将 if 语句从 for 循环中取出。但现在我不能使用 num 因为它只在 for 循环内初始化。我试着让它成为一个全局变量,但它也不起作用。那么我应该如何找到高于平均值的数字数量呢?
  • 您需要将在变量中某处输入/创建的随机数保存。使用数组、列表、集合或任何你想要的数据结构。
  • @OHGODSPIDERS 的意思是您需要创建一个长度为amountint[] 并将生成的 随机数存储在该数组中,以便您可以遍历它们再次计算平均值之后。

标签: java average


【解决方案1】:

您可以使用 2 个循环和一个数组来存储值:

public class AverageRandom{
 public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    System.out.print("n? ");
    int amount = sc.nextInt();

    Random randNo = new Random();
    double sum = 0;
    int max = 9;
    double average = 0;

    int[] array = new int[amount]; // define an array of size 'amount'

    for(int i = 0; i < amount; i++) {
        array[i] = randNo.nextInt(max) + 1; // fill the array

        System.out.print(array[i] + " ");

        sum += array[i];
    }
    average = sum/array.length; // you can also calculate the average inside the loop

    int above = 0;

    for(int i = 0; i < array.length; i++) { // iterate the array (your random values)
        if(array[i] > average){
            above++;
        }
    }

    System.out.println("\nAverage = " + average);
    System.out.print("Number of values above the average = " + above + "\n");
 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 2016-09-19
    • 2023-03-12
    • 2014-05-12
    • 2011-01-19
    相关资源
    最近更新 更多