目標は、一連の数値を入力すると、最小値と最大値が表示されるプログラムを作成することです。-99はセンチネルとして使用されます。
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 と入力すると、値 22 が破棄されて 7 に置き換えられたため、22 ではなく 15 が返されます。
最小値が表示されず、代わりに 0 が表示される
数値以外が入力され、エラー メッセージが表示された後、さらに数値が入力されると、minValue は maxValue と同じように表示されます。