首先,请记住我是新手,所以聪明的家伙,真好!
我试图理解为什么在这一行:
for(i = word.length() -1; i >= 0; i--)
System.out.print(word.charAt(i));
我得到了我的字符串向后回复(回答:oaiCgiiB),在这行代码中:
for(i = 0 ; i <= word.length(); i++)
System.out.print(word.charAt(i));
我收到错误...
Beijing ChicagoException in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 15
at java.lang.String.charAt(String.java:646)
at p200548.main(p200548.java:43)
我希望第二个像第一个一样工作,而不是输出BiigCiao
任何帮助都将不胜感激。
答案 0 :(得分:3)
因为你不在界限。
虽然:
for(i = word.length() -1; i >= 0; i--)
System.out.print(word.charAt(i));
对于length = 3,使用索引2,1,0,以下内容:
for(i = 0 ; i <= word.length(); i++)
System.out.print(word.charAt(i));
使用索引0,1,2,3而且3超出了长度= 3的范围。
你可能想要:
for(i = 0 ; i < word.length(); i++)
System.out.print(word.charAt(i));
将使用索引0,1,2。
答案 1 :(得分:0)
在C语言中,您不会得到异常,因为它不关心跨越数组的边界。这是C. Java中的问题之一,但是每当您尝试访问数组外的索引时,它总是检查边界并给出“IndexOutOfBoundsException”。
C中的等效代码:
for(i = 0 ; i <= strlen(word); i++)
printf("%c",word[i]);
可以正常工作,因为word [length]是'\ 0'并且打印它没有问题
答案 2 :(得分:0)
for(i = 0 ; i <= word.length()-1; i++) //add mines 1 here
System.out.print(word.charAt(i));
您必须将-1添加到;word.length()-1;
因为单词从索引&#34开始; 0 &#34;并以&#34; word.length() - 1 &#34;
结束