Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
随机平均数在Java中不起作用_Java_Average - Fatal编程技术网

随机平均数在Java中不起作用

随机平均数在Java中不起作用,java,average,Java,Average,我需要找到随机数的平均值(1-9),然后找到高于平均值的随机数的数量 我找到了平均数,我试图找到高于平均数的数字,但它总是给我错误的答案 public class AverageRandom{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.print("n? "); int amount = sc.nextIn

我需要找到随机数的平均值(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");
    }
}


公共类平均值{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
系统输出打印(“n”);
int amount=sc.nextInt();
Random randNo=新的Random();
双和=0;
int max=9;
双平均=0;
int以上;
以上=0;
对于(int i=0;i平均值){
以上++;
}
}
System.out.println(“\nAverage=“+average”);
System.out.print(“高于平均值的数值数=“+高于+”\n”);
}
}

您可以使用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");
 }
}
公共类AverageRandom{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
系统输出打印(“n”);
int amount=sc.nextInt();
Random randNo=新的Random();
双和=0;
int max=9;
双平均=0;
int[]数组=新的int[amount];//定义一个大小为“amount”的数组
对于(int i=0;i平均值){
以上++;
}
}
System.out.println(“\nAverage=“+average”);
System.out.print(“高于平均值的数值数=“+高于+”\n”);
}
}

您的逻辑有点错误。在查看所有数字之前,你怎么知道平均值是多少?显然,你不能这么做。因此,您需要首先循环所有输入的数字以确定平均值。一旦你得到了平均值,你就可以再次查看你的数据,看看哪些高于/低于平均值。在计算完平均值之前,通过检查一个数字是否高于/低于平均值,您当前正在做的事情无法工作。“我找到了平均值”,在每次迭代中打印
平均值
值。你会发现发生了什么wrong@OHGODSPIDERS所以我从for循环中取出if语句。但是现在我不能使用num,因为它只是在for循环中初始化的。我试着把它变成一个全局变量,但也没用。那么,我应该如何找到高于平均值的数字数量呢?您需要将输入/创建的随机数保存在变量中的某个位置。使用一个数组、一个列表、一个集合或任何你想要的数据结构。@OHGODSPIDERS的意思是,你需要创建一个长度为
amount
int[]
,并将生成的随机数存储在该数组中,这样你就可以在计算平均值后再次遍历它们。