我是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();
}
}
答案 0 :(得分:-2)
您正在犯一些常见的初学者错误。首先,数组更适合具有固定大小且从不改变的集合,例如一年中的几个月。如果要更改条目数,请使用类似列表的内容:
var temperatures = new List<float>();
第二,对于现实世界中的温度(例如温度)而言,整数是一种较差的类型。首选使用float
或double
之类的浮点类型。
接下来,变量名称应告诉您变量包含的内容; userInput
之类的名字不会告诉我们。
接下来,您的代码不允许用户“输入”五个温度,它要求用户输入五个温度,否则将引发异常。设计循环以使用任意数量的输入:
while (true)
{
var nextTemperature = GetTemperatureFromSomewhere();
if (nextTemperature == null)
break;
if (nextTemperature is valid)
temperatures.Add(nextTemperature);
}
看上面的代码。如果nextTemperature
不为null但超出范围,则不想将其添加到temperatures
。
工作完成后,您想要存储一个maximumTemperature
并将其与每个nextTemperature
进行比较。如果每个nextTemperature
都超过maximumTemperature
,那么您的温度就会升高。