試圖讓我的 while 回圈有 1 個以上的條件,基本上用戶輸入一個數字高度,代碼繼續等等。高度資料將傳遞給代碼以供以后計算。
目前我已將其設定為當用戶未輸入數字(例如字母“H”)時,它會進入 while 回圈以獲取錯誤訊息。但是,我還希望輸入的高度不能超過 3 的條件,如果說用戶輸入 5,它也會進入錯誤訊息的回圈。目前當進入回圈用戶可以重試并輸入一個數字(可以輸入字母會繼續回傳)。在我的 while 條件中,我嘗試添加 && (heightM >3) - (while (double.TryParse(userInput, out double heightM)&& (heightM <3) == false) - 但似乎沒有做我想要的。在在這種情況下,它會忽略 tryparse,如果用戶輸入 4,它會正確回圈,但如果是一個字母,應用程式會崩潰。
我很新 - 仍在學習,抱歉,如果這是一個簡單的問題:/
double height;
string userInput = Console.ReadLine().ToLower();
while (double.TryParse(userInput, out double heightM) && (heightM<3) == false)
{
Console.Clear();
Console.WriteLine("Incorrect value or input");
Console.WriteLine("");
Console.WriteLine("Enter Height in Meters only up to Maxmium of 3 meters");
userInput = Console.ReadLine().ToLower();
}
height = double.Parse(userInput);
uj5u.com熱心網友回復:
使用while(true)回圈,我們可以檢查條件并break退出回圈,否則回圈將一直持續到輸入正確的值。
double height;
double maxHeight = 3;
while (true)
{
var userInput = Console.ReadLine();
if (double.TryParse(userInput, out var heightM) && heightM <= maxHeight)
{
height = heightM;
break;
}
Console.Clear();
Console.WriteLine($"Please enter Height in Meters only up to maximum of {maxHeight} meters");
}
Console.WriteLine(height);
uj5u.com熱心網友回復:
決議不是數字的字串將導致 out 變數設定為 0,因此您的邏輯存在缺陷。相反,您應該將其更改為
double heightM;
string userInput = Console.ReadLine().ToLower();
while (!double.TryParse(userInput, out heightM) || (heightM > 3))
{
....
}
第一個變化是使用單個 hejghtM 變數,第二個變化是我們如何測驗 TryParse 的結果,如果決議失敗我們可以立即輸入重試代碼。所以第三個變化是使用 || 而不是 && ,這導致了第四個變化,我們測驗大于 3 的值以進入重試回圈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/351268.html
標籤:C#
