2014-09-18 81 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++)