随机平均数在Java中不起作用
我需要找到随机数的平均值(1-9),然后找到高于平均值的随机数的数量 我找到了平均数,我试图找到高于平均数的数字,但它总是给我错误的答案随机平均数在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
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[]
,并将生成的随机数存储在该数组中,这样你就可以在计算平均值后再次遍历它们。