如何显示数组的最高和最低

时间:2015-03-14 07:25:48

标签: c# arrays

在这里,我向用户询问作业分数,然后在丢弃最小和最大分数后对其进行平均。我已将用户输入存储在数组中。在我的DisplayResults方法中,我不知道如何显示丢弃的最低和最高分数。任何帮助表示赞赏!以下是我到目前为止的情况:

class Scores
{
    static void Main(string[] args)
    {
        double sum = 0;
        double average = 0;
        int arraySize;
        double[] inputValues;

        arraySize = HowManyScores();

        inputValues = new double[arraySize];
        GetScores(inputValues);
        sum = CalculateSum(inputValues);
        average = CaculateAverage(sum, arraySize);

        DisplayResults(inputValues, average);
        Console.Read();
    }

    public static int HowManyScores()
    {
        string input;
        int size;
        Console.WriteLine("How many homework scores would you like to enter?");
        input = Console.ReadLine();
        while (int.TryParse(input, out size) == false)
        {
            Console.WriteLine("Invalid data. Please enter a numeric value.");
            input = Console.ReadLine();
        }

        return size;
    }

    public static void GetScores(double[] inputValues)
    {
        double scoreInput;
        Console.Clear();

        for (int i = 0; i < inputValues.Length; i++)
        {
            scoreInput = PromptForScore(i + 1);
            inputValues[i] = scoreInput;
        }
    }

    public static double PromptForScore(int j)
    {
        string input;
        double scoreInput;

        Console.WriteLine("Enter homework score #{0}:", j);
        input = Console.ReadLine();

        while (double.TryParse(input, out scoreInput) == false)
        {
            Console.WriteLine("Invalid Data. Your homework score must be a numerical value.");
            input = Console.ReadLine();
        }

        while (scoreInput < 0)
        {
            Console.WriteLine("Invalid Data. Your homework score must be between 0 and 10.");
            input = Console.ReadLine();
        }

        while (scoreInput > 10)
        {
            Console.WriteLine("Invalid Data. Your homework score must be between 0 and 10.");
            input = Console.ReadLine();
        }

        return scoreInput;
    }

    public static double CalculateSum(double[] inputValues)
    {
        double sum = 0;
        for (int i = 1; i < inputValues.Length - 1; i++)
        {
            sum += inputValues[i];
        }

        return sum;
    }

    public static double CaculateAverage(double sum, int size)
    {
        double average;
        average = sum / ((double)size - 2);
        return average;
    }

    public static void DisplayResults(double[] inputValues, double average)
    {
        Console.Clear();
        Console.WriteLine("Average homework score: {0}", average);

        //Console.WriteLine("Lowest score that was discarded: {0}",
        //Console.WriteLine("Highest score that was discarded: {0}",
    }
}

}

1 个答案:

答案 0 :(得分:1)

您基本上只需做一件事:在收到输入数据后对数组进行排序。然后,打印第一个和最后一个值可以获得最小和最大分数。使用

Array.Sort(intArray);
在调用main

之后,在GetScores

 Console.WriteLine("Lowest score: {0} Highest score: {1}", 
    inputValues[0], inputValues[inputValues.Length - 1]);

打印结果。干杯

编辑:如果您对完全订购价值不感兴趣,Jens在使用Min / Max的评论中提出的建议可能更多。