1

私はその特徴の1つが次のようなプログラムを書いています:それを受け取る同じタイプの変数ではないデータ入力のためにエラーは発生しません。したがって、ユーザーがプロンプトで1つのデータ型のみを入力できるようにする方法を知っています。使い方はもう知っていますがtry-catch、使いたくないです。

編集:

ユーザーはfloatタイプの値のみを入力する必要があります

例を挙げてください。

4

4 に答える 4

2

すべてのコマンドラインパラメータは文字列であるため、解析のみが可能です。float値が必要な場合は、次のようにします。

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

TryParseが成功した場合、値はfに割り当てられます。それ以外の場合、f==0.0。

于 2012-09-11T13:52:23.783 に答える
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
}
于 2012-09-11T13:49:58.240 に答える
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())。

于 2012-09-11T13:51:24.077 に答える
0

コンソールはテキストのみを読み取ります。ユーザーが特定のタイプのデータのみを入力するようにする場合は、TryParseメソッドを使用するGetDate()などの一般的なメソッドを作成し、ユーザーがそのタイプに解析できる文字列を入力するまでループすることをお勧めします。

独自のコマンドエスケープ戦略で作業する必要があります。これにより、エスケープをGetDate()を呼び出したメソッドにフィードバックして、ユーザーがエスケープしたことを通知します。

于 2012-09-11T13:55:14.003 に答える