如何按照我要找的方式混合字符串?

时间:2014-06-17 13:21:24

标签: java string char

首先,请记住我是新手,所以聪明的家伙,真好!

我试图理解为什么在这一行:

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

任何帮助都将不胜感激。

3 个答案:

答案 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;

结束