2016-04-03 36 views
-1

我得到這個片段錯誤字符串索引出界外的片斷

char a[] = new char[5]; 

Scanner sc = new Scanner(System.in); 
System.out.println("Please enter values");     

for (int i = 0; i < 5; i++) { 
    a[i] = sc.next().charAt(i); 
} 
+0

你如何輸入你的價值觀,你想要完成什麼? –

+2

您每次循環時都會輸入一個新單詞?這不是胡說嗎?你想達到什麼目的? –

+0

我只是想以這種方式輸入數組內的值。不要試圖完成任何事情。請不要介意,這是我的第一個問題。 –

回答

0

您應該檢查輸入字符串長度:

for (int i = 0; i < 5; i++) { 
    String str = sc.next(); 
    if (str.length() > i) { 
     a[i] = str.charAt(i); 
    } 
} 

但是你的算法是怪異。

0

你這樣做:

for (int i = 0; i < 5; i++) { 
    a[i] = sc.next().charAt(i); 
} 

但如果用戶鍵入少於5個字符的字符串?

,那麼你試圖讀取超出界限的元素...

,說明在你的代碼錯誤很明顯的原因..

驗證輸入,甚至更好,使for循環從0開始直到輸入len。