2013-11-14 103 views
1

什么,我不明白的是,线:指数外边界例外控制台应用程序的

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

有apparantely都没法带任何参数,所以这可能是execption 我是新手的原因,帮助

+0

您需要使用'Int input = int.parse(userinput)',userinput不是数组 – Satpal

+1

在C#中,'String'可以作为char数组访问。 – germi

+0

的确如此。 '字符串'实现'IEnumerable ' –

回答

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 
} 
+0

第一个例子是你只想解析第一个字符。 –

+0

谢谢你,你正在更正,更新 –

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

input0如果一个空字符串传递设置英寸

所以对于输入'532632fergerg'input'5' 对于输入'fwehgwerhwh'它将炸毁因为'f'不是字符串。在这种情况下,您可能需要使用TryParse而不是Parse

编辑 更新我的代码使用的TryParse,因为这是非常可靠的,尤其是你不知道什么是用户输入的工作时。

+0

我会随时使用TryParse()通过Parse()随时保持代码尽可能的稳定。 – scheien

+0

@scheien - 同意。现在让我的例子更加可靠。 –

+0

但问题是,我在进行任何输入之前会抛出错误,它甚至在运行时需要输入吗? –