2013-01-17 40 views
0
public class Reverse { 
    public static void main(String[] args) { 
     char name[]="prakash".toCharArray();////initialisng array 

     ////////swapping string order////////////// 
     //////////i.e. reversing array of characters////////// 

     for(int i=0;i<=(name.length)/2;i++) 
     { 
      int j=name.length-i; 
      char temp; 
      temp=name[i]; 
      name[i]=name[j]; 
      name[j]=temp; 
     } 
    } 
} 

我收到以下錯誤:java.lang.ArrayIndexOutOfBoundsException。代碼有什麼問題?反轉字符數組

+3

這是什麼'name.length-i'等於在第一次循環? –

回答

2

數組的索引是從零開始的:「第一」元素是0時,「最後」元素是length-1

因此,如果你想j去從最後一個元素了,它應該是

int j=name.length-1-i; 
+0

非常感謝.....它的作品,但它只適用於有奇數的字符串。字符.....它顯示錯誤的字符串輸出甚至沒有。字符..... – toadalskiii

+0

使用'I <(name.length)/ 2'代替'I <=(name.length)/ 2'避免交換的中間字符對一個額外的時間(如果長度是4 ,我們的第一個字符是第0或1,也就是'I'2'不是'我<= 2') –

+0

非常感謝再次:) ..........終於得到了正確的答案:) – toadalskiii

0

如果你有

int j=name.length-i; 

因爲數組是基於零,且在name.length位置沒有進入你應該有

int j=name.length-i-1; 

+0

非常感謝.....它的工作原理,但它只適用於奇數沒有的字符串。字符.....它顯示錯誤的字符串輸出甚至沒有。字符..... – toadalskiii

1

嘗試

for (int i = 0; i <= (name.Length-1)/2; i++) 
     { 
      int j = (name.Length-1) - i; 
      char temp; 
      temp = name[i]; 
      name[i] = name[j]; 
      name[j] = temp; 

     }