目标是创建一个程序,当输入一系列数字时,显示最小值和最大值。 -99将被用作哨兵。从C#中的一系列数字中获取最小值和最大值,无需排序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
double number = 0, maxValue = 0, minValue = 0;
string goOn = "Y";
Console.WriteLine("Please enter a series of numbers, when you wish to stop entering numbers please enter -99.");
Console.WriteLine("The smallest and largest values will then be displayed.");
Console.WriteLine("Remember not to enter -99 unless you want the series to end.");
do
{
while (!double.TryParse(Console.ReadLine(), out number))
Console.WriteLine("Please enter whole numbers only");
while (number != -99)
{
process(ref number, ref minValue, ref maxValue);
while (!double.TryParse(Console.ReadLine(), out number))
Console.WriteLine("Please enter whole numbers only");
}
Console.WriteLine("The smallest value is {0} and the largest value is {1}.", minValue, maxValue);
Console.WriteLine("Do you want to enter another series of numbers?");
Console.WriteLine("If so enter y, if you want to end press any other key");
goOn = Console.ReadLine();
if (goOn.ToUpper() == "Y")
{
Console.WriteLine("Please enter your set of numbers.");
Console.WriteLine("Remember not to enter -99 unless you want the series to end.");
}
} while (goOn.ToUpper() == "Y");
}
static void process(ref double minValue, ref double maxValue, ref double number)
{
if (number > maxValue)
{
number = maxValue;
}
if (number < minValue)
{
number = minValue;
}
}
}
}
我还没学会阵列或气泡或类呢,但这里的问题:
大概是因为得到最小值和最大值的方法,如果我说3型,22 ,7,15,1 I将得到的15代替22,因为该值22已被抛出并替换为7.
不被显示的最小值,并且代替显示为0
时输入一个非数字,并且在显示错误消息之后,则更多数字被输入,那么minValue显示与maxValue相同。
您目前的方法*从不*更改'minValue'或'maxValue'。它*只*改变'号码'。这似乎不太可能是你想要的。 (我强烈怀疑你不应该通过引用传递'number' ......)另外,当你解析双打时,要求整数是很奇怪的......所以“3.5”很好,但它是不是一个整数... – 2013-03-04 08:48:28
我已经切换了它,但minValue仍然没有显示,除非它小于0. – Sabotenderizer 2013-03-04 09:52:22