java 查找输入数组元素的平均/最高/最低等级

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/26539694/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 10:06:27  来源:igfitidea点击:

Finding the average/highest/lowest grade of input array elements

javaarraysuser-input

提问by joykyuu

I'm a beginner Java programmer (like..level 0...). There's this project that I'm working on but I've been stumped for days. I probably also have a lot of little mistakes I didn't notice.

我是一个初级 Java 程序员(比如..level 0 ...)。我正在做这个项目,但我已经被难住了好几天。我可能也有很多我没有注意到的小错误。

The project is this:

项目是这样的:

Ask the user to enter a series of grades from 0.00 to 100.00 Do not let the user exceed those boundaries. Make enough space for up to 100 grades. Stop adding grades when the user enters -1. Create a (generic!) function to compute the average of the grades. Also create functions to get the highest, and lowest of the grades. Use these functions to print out and inform the user of the average, highest, and lowest grades.

要求用户输入从 0.00 到 100.00 的一系列等级 不要让用户超出这些界限。为最多 100 个等级留出足够的空间。当用户输入 -1 时停止添加成绩。创建一个(通用!)函数来计算成绩的平均值。还要创建函数来获得最高和最低的成绩。使用这些功能打印出来并告知用户平均、最高和最低等级。

So far I've got the first half of the code (entering up to 100 grades) but I am completely clueless as to how I should find the average, highest, and lowest grades. Could someone give me ideas or at least give me some sort of example?

到目前为止,我已经获得了代码的前半部分(最多可输入 100 个等级),但我完全不知道如何找到平均、最高和最低等级。有人能给我一些想法或至少给我一些例子吗?

Thanks.

谢谢。

Here's my code as of the moment (It's incomplete, especially around the average/highest/lowest grade):

这是我目前的代码(它不完整,尤其是在平均/最高/最低等级附近):

import java.util.*;

 public class GradeStats
 {  
/*
 *Set the array size to 100
 *keep track of where the user is in the array
 *

*/

/*
 * Ask the user to enter a series of grades from 0.00 to 100.00. Do not let the user exceed those boundaries. Make enough space for up to 100 grades.
 * Stop adding grades when the user enters -1. 
 * Create a function to compute the average of the grades. Also create functions to get the highest and lowest of the grades.
 * Use these functions to print out the average, highest, and lowest grades. 
 */

public static void main(String [] args)
{
    // Program loop checker
    boolean done = false;

    // Two doubles used in the equation
    double d1; // Remember we can use commas

    // Scanner to get user input
    Scanner inputReader = new Scanner(System.in);

    // Goal of the program
    System.out.println("\nThis program will find the average, highest, and lowest grades.");    

    // Set up an array of 100 empty slots
    int age[] = new int[100];

    // Program instruction for the user
    System.out.println("Enter a series of grades from 0.00 to 100.00 or type '-1' to exit.\n"); 

    while(!done)
    {
        // Input grade

        double gradeA = inputReader.nextDouble();
        Scanner endReader = new Scanner (System.in); 

        if(gradeA == -1)
        {
                done = true;
        }   
        else if(gradeA > 100)
        {
                done = true;
                System.out.println("Sorry, this is not a valid grade.");
        }   
    }

    int gradeCount; //Number of input grades
    double grade; //Grade Value

    while (gradeCount! = -1)
    {
        gradeCount = gradeCount++
    }

    if (gradeCount !=0)
    {
        double average
        average = double total/ gradeCount;
        System.out.println("The average grade of the students is " +  average(grade));
    }

    // Return the average of an array of integers
      public static double arrayAverage(int intArray[])
      {

        double arrayAverage;
        arrayAverage = gradeA / 3;
        return averageAnswer;
     }
        if (hGrade > lGrade)
        {
        System.out.println("The highest grade is" +hGrade);
        }

        else if (lGrade < hGrade)
        {
            System.out.println("The  grade is +hGrade);
        }

        System.out.println("The lowest grade is" + lGrade);
        System.out.println("The average grade of the students is " +  arrayAverage(grade));
    // Say bye bye
       System.out.println("Bye.");
  }
}

采纳答案by hooda

Building off of Denise's answer, you can pass the double array to this function to print the average, min, and max.

根据 Denise 的答案,您可以将 double 数组传递给此函数以打印平均值、最小值和最大值。

private void printAverageMinAndMax(double[] grades){
    double total = 0.0;
    double max = 0.0;
    double min = Double.MAX_VALUE;
    //Loop through all of the grades.
    for(int i = 0; i < 100; i++){
        double grade = grades[i];
        //Add the grade to the total
        total += grade;
        //If this is the highest grade we've encountered, set as the max.
        if(max < grade){
            max = grade;
        }
        //If this is the lowest grade we've encountered, set as min.
        if(min > grade){
            min = grade;
        }
    }

    System.out.println("Average is: " + (total / 100));
    System.out.println("Max is: " + max);
    System.out.println("Min is: " + min);
}

回答by Denise

You need to store the grade (gradeA) somewhere. The question asks you to compute the average of a set of grades which the user is going to enter, but you've only got just one.

您需要将等级 ( gradeA)存储在某处。该问题要求您计算用户将要输入的一组成绩的平均值,但您只有一个。

One thing you could do, since you're supposed to have enough space for just 100 grades, is to make an array:

你可以做的一件事,因为你应该有足够的空间来容纳 100 个等级,是制作一个数组:

double[] grades = new double[100];

Then while you go through the loop, insert into the array:

然后当你遍历循环时,插入到数组中:

int index = 0;
while(!done)
{
    // Input grade

    double gradeA = inputReader.nextDouble();
    Scanner endReader = new Scanner (System.in); 

    if(gradeA == -1)
    {
            done = true;
    }   
    else if(gradeA > 100)
    {
            done = true;
            System.out.println("Sorry, this is not a valid grade.");
    }   
    grades[index] = gradeA;

    index++;
}

Then you can pass that array of integers to your average, min, max functions. (Which I can see you're just getting started on.)

然后您可以将该整数数组传递给您的平均值、最小值、最大值函数。(我可以看到你才刚刚开始。)