2014-06-17 43 views
-1

首先,請記住我是這個新手,聰明的傢伙,很好!如何以我想要的方式混合字符串?

我試圖理解爲什麼在這一行:

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

(i = 0;我 Bozman

+0

而不是'i <= word.length(); '在第二個for循環中使用'我 Rohan

回答

0
for(i = 0 ; i <= word.length()-1; i++) //add mines 1 here 
System.out.print(word.charAt(i)); 

你必須添加-1到;word.length()-1;

因爲字開始於索引 「」,並用「word.length()結束 - 1

3

因爲你超出界限。

雖然:

for(i = word.length() -1; i >= 0; i--) 
System.out.print(word.charAt(i)); 

爲長度= 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。

+0

(所以'我

0

在C語言中,您不會遇到異常,因爲它不關心數組的交叉邊界。這是C. Java中的問題之一,但是總是檢查邊界,並且每當嘗試訪問數組外部的索引時都會給出'IndexOutOfBoundsException'。

在C中的等效代碼:

for(i = 0 ; i <= strlen(word); i++) 
    printf("%c",word[i]); 

將工作細如字[長度]是 '\ 0' 並沒有問題打印出來

相關問題