如何从输入文件中找到均值,中位数,模式和范围?

时间:2016-02-19 07:11:44

标签: java arrays sorting mean median

我需要从输入文件中找到均值,中位数,模式和范围。

  

[输入文件的编号为{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];
    } 

}

2 个答案:

答案 0 :(得分:1)

  

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

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

<div>
    <div><span class="font-2">Categories:</span></div>
</div>
<script type="text/javascript">
    function check () {
        var inputs = document.querySelectorAll("input[type='checkbox']");
        for(var i = 0; i < inputs.length; i++) {
            if (inputs[i].checked) {
                return true;
            }  
        }
        alert("You have to select at least one.");
        return false;
    }
</script>
<div class = "addinfo">
    <?php $categories = array('Breakfast', 'Lunch', 'Dinner', 'Snack', 'Grill', 'Buffet', 'Fast Food');
          $values = explode(',' , $row['categories']);
    ?>

    <?php foreach($categories as $category) {
        $cat='';
        foreach($values as $value){
        if($value == $category){
        $cat ="checked";    
    }

    ?>
    <input <?php echo $cat ?> type="checkbox" name="category[]" value="<?php echo $category?>"><?php echo $category?><br>
    <?php } 
    }?>
    <input type = "button" onclick = "check();">
</div>  

以下是计算模式的快速代码段:

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

答案 1 :(得分: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]

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