現在、IF ELSEステートメントを使用して正しく実行したと思った演習を行っていますが、一度提出すれば、WHILEループまたはDO-WHILEループを使用するよう指示されました。あなたはWHILEループをどこで使用したのかわかりますが、それは私に割り当てられたエラーメッセージの無限ループを与えています。私はそれを止める方法を知らないのです!このWHILEループを動作させるにはどうすればよいですか?
static void Main(string[] args)
{
decimal hours;
const decimal HOURLY_RATE = 2.5m;
const decimal MAX_FEE = 20.00m;
Console.WriteLine("Enter the amount of hours parked:");
hours = decimal.Parse(Console.ReadLine());
decimal parkingCost = hours * HOURLY_RATE;
while (hours < 1 || hours > 24)
{
Console.Write("Enter correct amount of hours - 1 to 24. ");
}
if (parkingCost > MAX_FEE)
{
Console.Write("Total fee is $" + MAX_FEE);
Console.WriteLine(" Time parked in hours is " + hours);
}
else
{
parkingCost = hours * HOURLY_RATE;
Console.WriteLine("The cost of parking is " + parkingCost.ToString("C"));
Console.WriteLine("Time parked in hours is " + hours);
}
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
}
}
だから、アイデアは、「時間の正確な量を入力 - 24に1を」するために私が欲しいということであるユーザーはプログラムが行きそうでない場合のために、24未満1以上の数値を入力した場合に表示しますIFとELSEステートメントを先に進めてください。
ReadKey以下に示すように、whileループ内の入力を受け付ける行を追加し、数値として、および1~24の間で入力した文字を確認してください。そうであれば、「中断する」。 – DonBoitnott
無効なエントリをユーザーが修正できるようにする必要があります。もう一つの 'Console.ReadLine()'をwhileループ内で 'hours'の新しいバージョンを収集するようにしてください。そうしないと、最初のエラーで永遠にループします。 –
ありがとうジョン。私は以下の答えでコードを追加しましたが、私は新しい問題が発生しました。このwhileループは、あなたが働いた驚異を一点まで提供しました。私が間違った時間を入力すると、25とし、正確な時間を入力するように指示します。その時点で、入力はすべてMAX_FEE($ 20)の回答を提供します。その周りに道がありますか? - – purplemonkeydishwasher