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);
      }
    }
 }

这设置input0好像传入了一个空字符串。

所以对于输入'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 回答