我正在編寫一個程序,其特徵之一是:沒有發生錯誤,因爲數據輸入與接收它的變量類型不同。所以我會知道如何讓用戶在提示符下只輸入一種數據類型。我已經知道如何使用try-catch
,但我不想使用它。如何讓用戶只在命令行中輸入一種類型的數據?
編輯:
的用戶必須輸入唯一float類型值
請給我一個例子。
我正在編寫一個程序,其特徵之一是:沒有發生錯誤,因爲數據輸入與接收它的變量類型不同。所以我會知道如何讓用戶在提示符下只輸入一種數據類型。我已經知道如何使用try-catch
,但我不想使用它。如何讓用戶只在命令行中輸入一種類型的數據?
編輯:
的用戶必須輸入唯一float類型值
請給我一個例子。
由於所有命令行參數都是字符串,因此只能解析它們。如果你希望一個浮點值,你會做這樣的事情:
float f;
bool success = Float.TryParse(parameter, out f);
if(success)
{
....
}
else
{
....
}
如果的TryParse是成功的,現在該值分配到f。否則,f == 0.0。
我會測試你的答案,如果它的工作,我接受它作爲正確的。 – Zignd
像這樣的事情
string usrInput = Console.ReadLine();
while(!isValid(usrInput))
{
Console.Write("Invalid Input. Enter a valid value");
usrInput = Console.ReadLine();
}
//continue to use input here
寫上您的有效功能
private void isValid(string input)
{
//use regex
//use something else
//if test passed return true
//return false
}
而不需要try-catch塊,最簡單的方法是嘗試解析輸入,並控制流量決定基於輸入是否被成功解析。例如,你可以不斷地尋求有效的輸入,同時用戶輸入不成功解析:
float myValue;
do
{
Console.WriteLine("Enter a valid value: ");
} while (!Float.TryParse(Console.ReadLine(), out myValue))
// myValue contains a valid float, do something with it now...
float percent = myValue/100.0f;
所有.NET的號碼類型包括TryParse
方法,所以如果你有其他的輸入類型可以更改相應的例子(Integer.TryParse()
,Double.TryParse()
等)。
控制檯只讀取文本。如果你想確保用戶只輸入給定類型的數據,我建議你創建一般的方法,例如GetDate()使用TryParse方法並循環,直到用戶輸入一個可以解析爲該類型的字符串。
您將不得不在自己的命令轉義策略中工作,以便它一直返回到調用GetDate()的方法讓它知道用戶已轉義。
你能舉出一個用戶可以放入的數據類型的例子嗎? – waldrumpus