1

私がやりたいことは、私のプログラムを使用している人々が何も入力せずにEnterキーを押しても、エラーが発生しないことです。ここはプログラムの一部です:

Console.WriteLine("4.-Ya no quiero jugar >.<");
int opc = Convert.ToInt16(Console.ReadLine());

switch (opc)
{
    case 1:
        Console.WriteLine("omg");
        break;

    case 2:
        Console.WriteLine("wtf");
        break;

    default:
        Console.WriteLine("Cant do that  >.>");
        Console.ReadKey();
        break;

    etc.
}

事は整数を使用しています、私はこれをやろうとしました

string opc1=console.readline();

if (opc =="")
{
    console.writeline("nope,try again");
}
else
{ // Brace was omitted in original - Jon
    int opc = Convert.ToInt16(Console.ReadLine());

    switch (opc)

    blah blah.

およびそれのさまざまな組み合わせ >.< そしてデフォルトはそのためには機能しません

誰かが私がそれを解決するのを手伝ってくれることを願っています >.<

4

6 に答える 6

10

方法を確認してくださいInt16.TryParse

これにより、ユーザー入力がInt16(負の 32768 から正の 32767 まで) の範囲内の数値でない場合、プログラムを終了するか、別のアクションを実行できます。

サンプル コードは、MSDN エントリ ( Int16.TryParse Method ) にあります。

于 2009-12-14T18:51:19.093 に答える
4

まず、Console.ReadLine()変数に設定します。次に、設定した変数が空または null でないかどうかを確認します。また、変換が成功したかどうかに応じて true または false を返すので、Int16 クラスの TryParse メソッドを使用することをお勧めします。

ReadLineまた、文字列もオンにできるため、整数に変換する必要はありません。ReadLineはすでに であるため、String変換は必要ありません。ただし、整数が必要な場合は、これを試してください。

String lineIn = Console.ReadLine();

if (!String.IsNullOrEmpty(lineIn))
{
    Int16 myNum;
    if (Int16.TryParse(lineIn , out myNum))
    {
            switch(myNum)
            {
                    case 1:
                    ...
                    default:
                    ...
            }
    }
}
于 2009-12-14T18:52:06.003 に答える
1

あなたが欲しいのは int.Parse(...) だと思います

于 2009-12-14T18:51:30.670 に答える
0

エラー処理にtry catchステートメントを使用することを検討するかもしれません...

于 2009-12-14T18:51:18.070 に答える
0

トライパース:

string str;
short val;
while(!short.TryParse(str=Console.ReadLine(), out val))
{
    Console.WriteLine("Cant do that  >.>");
}
于 2009-12-14T18:54:30.973 に答える
0

整数を取得するには、通常、このような再帰関数を使用します

private int GetInt()
{
     try
     {
         return int.parse(Console.Readline().Trim());
     } 
      catch (exception e) 
     {
         Console.WriteLine(string.format("{0} Please try again", e.message);
         return GetInt();
     }
}
于 2009-12-14T19:06:08.030 に答える