首页 > 解决方案 > JAVA中未知数的平均值

问题描述

我正在寻找从 1 到 10000 的完美数字以及结果的算术平均值。下面的代码提供了完美的数字(6、28、496、8128),但找不到它们的平均值的解决方案。任何帮助,将不胜感激。

public static void main(String[] args){
int min = 1; 
int max = 10000;

for (min = 1; min <= max; min++) { 
    int sum = 0;
    for (int e = 1; e < min; e++) {
        if ((min % e) == 0) {
            sum += e;
        } 
    }  
    if (sum == min){           
        System.out.println(sum);
    }          
}      

}

标签: javaaverage

解决方案


要计算结果的平均值,您可以使用流:

public static void main(String[] args) {

    int min = 1;
    int max = 10000;

    List<Integer> avg = new ArrayList<>();

    for (min = 1; min <= max; min++) {
        int sum = 0;
        for (int e = 1; e < min; e++) {
            if ((min % e) == 0) {
                sum += e;
                avg.add(e);
            }
        }
        if (sum == min) {
            System.out.println(sum);
        }

    }
    
    //Rounded average result:
    System.out.println("The result average is: " + Math.round(avg.stream()
                                                       .mapToInt(Integer::intValue)
                                                       .average()
                                                       .getAsDouble()));
    
    //Or not rounded average result with two digits precision:
    System.out.printf("The result average is: %.2f \n", avg.stream()
                                                         .mapToInt(Integer::intValue)
                                                         .average()
                                                         .getAsDouble());       
    
}

推荐阅读