索引超出范围的异常控制台应用程序

时间:2013-11-14 13:31:58

标签: c#

我不明白的是那条线:

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

显然没有方法可以采取争论,所以这可能是解释的原因 我是新手,帮助

2 个答案:

答案 0 :(得分: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,因为它更可靠,特别是在处理用户输入时你不知道是什么。

答案 1 :(得分:1)

添加

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

这是你要解析第一个字符(根据你的代码)

如果您希望解析整个字符串,请将其更改为

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

如果无法解析字符串,这仍然可以执行execption。请转而使用Int32.TryParse()

int input;
if(Int32.TryParse(userinput, out input))
{
  //Do Work
}