从Java中的数组计算平均值/最大值/最小值 [英] Calculating Average/Max/Min from an array in Java

查看:111
本文介绍了从Java中的数组计算平均值/最大值/最小值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有我的代码,它将在名为 QuizScores.txt的文件中读取数字列表。但是,在此文件中,某些数字包含字母。我告诉我的程序只需忽略那些实例并移至下一个数字。现在的问题是,我的代码每次只需要读取一行来查看整个文件,将其读入,计算平均值,最大值和最小值,最后将其输出到名为 QuizStats.txt。任何帮助,将不胜感激!

I have my code that will read in a a list of numbers in a file called "QuizScores.txt". However, in this file, certain numbers contain letters. I have told my program to simply ignore those instances and move onto the next number. My issue now if that my code is only reading one line at a time where I need it to look at the entire file, read it in, calculate the average, the maximum, and the minimum, and finally output that to a file called "QuizStats.txt". Any help with this would be greatly appreciated! Thanks!

QuizScores:

QuizScores:

45
63
74g
34.7
75
4
8
15
16
23
42
67f
34
67

代码:

import java.io.*;

public class ScoreReader {


    public static void main(String[] args) {
        BufferedReader reader = null;

        try {
               String currentLine;

               reader = new BufferedReader(new FileReader("QuizScores.txt"));
               while ((currentLine = reader.readLine()) != null) {

                   int sum = 0;
                   String[] nums = currentLine.split("\\s+");
                   for (int i = 0; i < nums.length; i++) {
                       try{
                           double num = Integer.parseInt(nums[i]);
                           if (num != -1) {
                               sum += num;
                           }
                       } catch( NumberFormatException err )
                       {

                       }
                   }

                   System.out.println(sum);
               }
            } catch (IOException err) {
                err.printStackTrace();
            } 
            catch (NumberFormatException err) {}
            finally {
                try {
                   if (reader != null){
                       reader.close();
                   }
                }
                   catch (IOException err) {
                    err.printStackTrace();
                   }
            }
    }
}


推荐答案

尝试此代码

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ScoreReader {

    public static void main(String[] args) {
        BufferedReader reader = null;
        double average = 200.0;
        double min = Double.MAX_VALUE;
        double max = Double.MIN_VALUE;
        int n = 1;
        String currentLine;
        double c;
        try {
            reader = new BufferedReader(new FileReader("QuizScores.txt"));
            System.out.println("--Quiz Scores--");
            while ((currentLine = reader.readLine()) != null) {
                try {
                    c = Double.parseDouble(currentLine);
                } catch (Exception ex) {
                    continue;
                }
                max = max > c ? max : c;
                min = min < c ? min : c;
                average += (c - average) / n;
                n++;
                System.out.println(c);
            }
            System.out.println("--Summary--");
            System.out.println("Average: " + average);
            System.out.println("Minimum: " + min);
            System.out.println("Maximum: " + max);
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        try {
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

输出

--Quiz Scores--
45.0
63.0
34.7
75.0
4.0
8.0
15.0
16.0
23.0
42.0
67.0
34.0
67.0
--Summary--
Average: 37.97692307692308
Minimum: 4.0
Maximum: 75.0

是这是您要寻找的东西吗?

Is this what you are looking for?

这篇关于从Java中的数组计算平均值/最大值/最小值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆