2014-09-18 78 views
-1

請幫幫忙,我在下面的代碼這是爲什麼這個循環拋出IndexOutOfBoundsException?

public static void main (String[] args){ 

    String st = "harpreet"; 

    for(int i=1; i<=st.length(); i++){ 

     System.out.print(st.charAt(i)); 

    } 

} 
+2

提示:數組索引從零,而不是一個開始。 – NPE 2014-09-18 19:24:52

+0

java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:8 \t at java.lang.String.charAt(Unknown Source) – 2014-09-18 19:25:40

+1

'i 2014-09-18 19:26:27

回答

2

數組偏移越來越指數走出界外的從0開始,而不是1。如果你從1開始,你遺漏偏移0。此外,還要比較< ST。長度(),否則你走出界限

for(int i=0; i< st.length(); i++){ 
0

改變你的代碼閱讀。

for(int i=0; i< st.length(); i++){ 

索引超出範圍意味着您正在嘗試引用數組範圍內不存在的i。由於數組從0到n-1而不是從1到n,因此您正在脫離陣列。

+2

您的代碼仍然從1開始。 – Azar 2014-09-18 19:27:22

+0

+1,是@Azar是對的。 – 2014-09-18 19:27:48

+0

啊好電話我只看到他的<=。固定 – DanK 2014-09-18 19:28:16

0

數組索引從0開始,但你計算字符串的長度從1開始,如「harpreet」長度爲8,但「h」的字母索引爲0

IndexOutOfBoundException是一個運行時異常和它發生時你正試圖到達不存在的數組。

你的代碼應該是 -

for(int i=0; i< st.length(); i++)