2012-09-11 37 views
1

我正在編寫一個程序,其特徵之一是:沒有發生錯誤,因爲數據輸入與接收它的變量類型不同。所以我會知道如何讓用戶在提示符下只輸入一種數據類型。我已經知道如何使用try-catch,但我不想使用它。如何讓用戶只在命令行中輸入一種類型的數據?

編輯:

的用戶必須輸入唯一float類型

請給我一個例子。

+1

你能舉出一個用戶可以放入的數據類型的例子嗎? – waldrumpus

回答

2

由於所有命令行參數都是字符串,因此只能解析它們。如果你希望一個浮點值,你會做這樣的事情:

float f; 
bool success = Float.TryParse(parameter, out f); 
if(success) 
{ 
    .... 
} 
else 
{ 
    .... 
} 

如果的TryParse是成功的,現在該值分配到f。否則,f == 0.0。

+0

我會測試你的答案,如果它的工作,我接受它作爲正確的。 – Zignd

0

像這樣的事情

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 
} 
0

而不需要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()等)。

0

控制檯只讀取文本。如果你想確保用戶只輸入給定類型的數據,我建議你創建一般的方法,例如GetDate()使用TryParse方法並循環,直到用戶輸入一個可以解析爲該類型的字符串。

您將不得不在自己的命令轉義策略中工作,以便它一直返回到調用GetDate()的方法讓它知道用戶已轉義。

相關問題