协助进行C#中的温度比较分配

时间:2019-06-16 23:22:59

标签: c#

我是C#的新手,目前正在做一项让我做三件事的工作:

1)编写一个名为TemperaturesComparison的程序,该程序允许用户输入五个日均华氏温度,其温度范围必须为-30至130。

2)按输入顺序显示温度,然后显示温度的平均值。

3)如果温度超出范围,则要求用户重新输入。如果温度不低于任何以前的温度,则显示消息“变暖”。如果每个温度均低于上一个温度,则显示消息“变凉”。如果未按升序或降序输入温度,则显示消息“混合袋”。

我基本上已经有了前两个,但是我不确定100%如何以最方便的方式解决第三个问题。任何有关如何最好地处理这一建议的建议将不胜感激!

以下是我到目前为止编写的代码示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;

class TemperaturesComparison {
   static void Main(string[] args) {
       string userInput;
       // Set Array Range
       const int ARRAY_RANGE = 5;
       const double AVG_RANGE = 5.0;
       int[] dblArray = new int[ARRAY_RANGE];
       int total = 0;
       double average = 0; 

       WriteLine("This application calculates the average temperature of a provided dataset.\n");

       for (int i = 0; i < ARRAY_RANGE; ++i) {
           do { 
               Write("\nPlease provide temperature {0}: ", i + 1);
               userInput = ReadLine();
           } while (!int.TryParse(userInput, out dblArray[i]));
       }

       for (int i = 0; i < ARRAY_RANGE; ++i) {
           total += dblArray[i];
       }

       foreach(var numListHolding in dblArray)
                    Write(numListHolding.ToString() + " ");

       average = total / AVG_RANGE; 
       Write("\nAverage: {0}", average);   
       ReadKey();  
   }
}

1 个答案:

答案 0 :(得分:-2)

您正在犯一些常见的初学者错误。首先,数组更适合具有固定大小且从不改变的集合,例如一年中的几个月。如果要更改条目数,请使用类似列表的内容:

var temperatures = new List<float>();

第二,对于现实世界中的温度(例如温度)而言,整数是一种较差的类型。首选使用floatdouble之类的浮点类型。

接下来,变量名称应告诉您变量包含的内容; userInput之类的名字不会告诉我们。

接下来,您的代码不允许用户“输入”五个温度,它要求用户输入五个温度,否则将引发异常。设计循环以使用任意数量的输入:

while (true)
{
    var nextTemperature = GetTemperatureFromSomewhere();
    if (nextTemperature == null)
        break;

    if (nextTemperature is valid)
        temperatures.Add(nextTemperature);
}

看上面的代码。如果nextTemperature不为null但超出范围,则不想将其添加到temperatures

工作完成后,您想要存储一个maximumTemperature并将其与每个nextTemperature进行比较。如果每个nextTemperature都超过maximumTemperature,那么您的温度就会升高。