1

私が理解していないのはその行です:

 Class exmp
 {
    Static void Main(String userinput)
    {
       Int input = int.parse(userinput[0]);
    }
 }

どうやら引数を取る方法がないので、これが実行の理由かもしれません。

4

2 に答える 2

3

userinput[0]文字列の最初の文字です。したがって、空の文字列には最初の文字がないため、次のようになります。Index out of bounds

これを防ぐには、次のようにします。

 Class exmp
 {
    Static void Main(String userinput)
    {
      Int input = 0;
      if( userinput.length > 0 )
      {
        int.TryParse(userinput[0], out input);
      }
    }
 }

これは、空の文字列が渡されたかのように設定inputします。0

したがって、入力の場合は文字列では'532632fergerg' inputない'5' ため、入力の'fwehgwerhwh'場合は爆発し'f'ます。TryParseその場合、おそらくの代わりに使用したいと思うでしょうParse

編集 TryParse を使用するように私のコードを更新しました。これは、特にユーザー入力が何であるかわからない場合に、より信頼性が高いためです。

于 2013-11-14T13:37:12.193 に答える
1

追加

if (!String.IsNullOrEmpty(userinput))
    int input = int.parse(userinput[0]);

これは、最初の文字を解析する場合です(コードに従って)

文字列全体を解析する場合は、次のように変更します

if (!String.IsNullOrEmpty(userinput))
    int input = int.parse(userinput);

文字列を解析できない場合でも、これは can execption をスローします。Int32.TryParse()代わりに使用することを検討してください。

int input;
if(Int32.TryParse(userinput, out input))
{
  //Do Work
}
于 2013-11-14T13:33:05.010 に答える