【发布时间】: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 的意思是您需要创建一个长度为
amount的int[]并将生成的 随机数存储在该数组中,以便您可以遍历它们再次在计算平均值之后。