【问题标题】:How to find the mean, median, mode, and range from an input file?如何从输入文件中找到平均值、中位数、众数和范围?
【发布时间】:2016-05-31 16:18:00
【问题描述】:

我需要从输入文件中找到平均值、中位数、众数和范围。

[输入文件有数字{60,75,53,49,92,71}]

我不知道如何打印范围外的计算或计算模式。

这很糟糕,我对 Java 很陌生。

如果有人可以帮助我,那就太好了。

import java.io.*;
import java.util.*;

public class grades {

    public static double avg(double[] num) {
        double total = 0;
        int j = 0;
        for (; j < num.length; j++) {
            total += num[j];
        }
        return (total / j);
    }

    public double getRange(double[] numberList) {
        double initMin = numberList[0];
        double initMax = numberList[0];
        for (int i = 1; i <= numberList.length; i++) {
            if (numberList[i] < initMin) initMin = numberList[i];
            if (numberList[i] > initMax) initMax = numberList[i];
            double range = initMax - initMin;

        }
        return range;
    }

    public static void main(String[] args) throws IOException {
        double[] num = new double[12];
        File inFile = new File("data.txt");
        Scanner in = new Scanner(inFile);
        for (int i = 0; i < num.length && in.hasNext(); i++) {
            num[i] = in.nextDouble();
            // System.out.println(num[i]); 
        }

        double avg = grades.avg(num);
        System.out.println("Arithmetic Mean = " + avg);
        System.out.printf("Median = %.2f%n", grades.getMedian(num));
        System.out.println("Range = " + range);


    }

    public static double getMedian(double[] num) {
        int pos = (int) num.length / 2;
        return num[pos];
    } 

}

【问题讨论】:

  • 告诉我们更多关于会发生什么的信息?你看到什么样的错误?确切的问题。为什么很难打印出计算结果?
  • 该范围根本不打印出来,并且由于某种原因平均计算错误。它打印出 49.88883 作为平均值,这是错误的。

标签: java arrays sorting mean median


【解决方案1】:

尝试将元素排序到一个数组中。它将得到以下结果:

    [49,53,60,71,75,92]

假设你将它存储在数组 A 中。

int arrLength=A.length();
for(i=0,sum=0;i<arrlength;i++)
    sum=sum+A[i]
mean=sum/arrLength;
median=A[arrLength/2]

我认为您在找到中位数之前没有对元素进行排序。 做同样的事情来计算范围。我觉得会更容易

【讨论】:

  • 是的,是的,我做到了。谢谢大家
  • 好吧……您可以选择任何一个答案作为最佳答案(或不选择),以获得积分
【解决方案2】:

我不知道如何打印范围外的计算或计算模式。

您已经编写了一个函数来计算范围。这是打印范围的方法。

System.out.println("Range = " + getRange(num));

这里是一个快速的代码 sn-p 来计算模式:

public static double calculateMode(final double[] numberList) {
    double[] cnts = new double[numberList.length];
    double mode = 0, max = 0;

    for (int i = 0; i < numberList.length; i++) {
        /* Update Count Counter */
        cnts[numberList[i]]++;
        /* Check */
        if (max < cnts[numberList[i]]) {
            /* Update Max */
            max = cnts[numberList[i]];
            /* Update Mode */
            mode = numberList[i];
        }
    }
    /* Return Result */
    return mode;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 2021-12-19
    • 2018-03-18
    • 2016-04-01
    • 1970-01-01
    • 2021-04-14
    • 2021-05-12
    相关资源
    最近更新 更多