2013-11-14 60 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

但問題是,我在進行任何輸入之前會拋出錯誤,它甚至在運行時需要輸入嗎? –