我被困在試圖計算1和20之間的3個隨機整數的平均值。我必須將平均值舍入爲int並重復10000次。當我測試的程序重複2次,我得到的輸出:循環中的Rnd數的平均值java
Number is :18
Number is :14
Number is :2
sum is: 34
Average is: 11
Number is :13
Number is :3
Number is :6
sum is: 56
Average is: 18
但平均應該只是3個數字的平均值。這裏,第二個循環將第一個循環的總和與第二個循環的總和相加,從而使平均值錯誤(總和:34 + 22 = 56)。我希望它是22,所以平均值爲7.我注意到問題可能是這條線,sum + = n; ,但我不知道另一種方法來爲每個循環添加3個數字來獲得平均值。
package Histogram;
import java.util.Random;
public class RandomNumbers {
public static void main(String[] args) {
final int N = 2;
Random rand = new Random();
int n;
int average;
int sum = 0;
for (int a = 0; a < N; a++) {
for (int i = 0; i < 3; i++) {
n = rand.nextInt(20) + 1;
System.out.println("Number is :" + n);
sum += n;
}
average = sum/3;
System.out.println("sum is: " + sum);
System.out.println("Average is: " + average);
}
}
}
你可以你計算出的平均後sum'重置'爲0。 –
您必須確保在正確的位置將'sum'初始化爲0。 – ajb
事實上,你甚至不應該在外層循環之外聲明n,sum和average。 n應該在內部循環中聲明,sum和average應該在外部循環中聲明。下一步是提取內部循環的主體,計算平均值,轉化爲它自己的方法。始終儘可能縮小變量的範圍。對您的方法承擔一項責任。 –