2017-03-25 47 views
1
public class palindrome { 

    public static void main(String args[]) { 
    String name="caac"; 
    char com[]=name.toCharArray(); 

    char[] con=new char[4]; 
    for(int i=0,j=3;i<com.length;i++,j--) 
    { 

     com[j]=con[i]; 
     System.out.println(i+" "+j+"value of i "+con[i]); 

    } 

    } 
} 

我想複製char com到char c反向,我得到了空白輸出,這個程序有什麼問題。我應該做些什麼修正。這個問題主體不符合我們的質量行我不想看到stackoverflow。複製char到char數組反向

回答

1

小的修正,以現有的代碼就行了

con[j] = com[i]; 

System.out.println(i + " " + j + "value of i " + com[i] +" "+con[j]); 

效果很好。

public static void main(String args[]) { 
     String name = "daac"; 
     char com[] = name.toCharArray(); 

     char[] con = new char[4]; 
     for (int i = 0, j = 3; i < com.length; i++, j--) { 
      con[j] = com[i]; 
      System.out.println(i + " " + j + "value of i " + com[i] +" "+con[j]); 

     } 

    } 

其他解決方案是使用StringBuffer.reverse的字符串

StringBuffer sb = new StringBuffer(name); 
    char reverse[] = sb.reverse().toString().toCharArray(); 
2

看起來像com,con和我和j混在一起。我強烈建議避免我和j在一起,即使教科書這樣做。使用i和k代替,或者更好的是代表可變目的,com和con混淆的相似的東西。

如果改成這樣:

con[j] = com[i]; 
System.out.println(i + " " + j + " value of i " + com[i] + " " + con[j]); 

顯示此輸出,這是你的預期?

0 3 value of i c c 
1 2 value of i a a 
2 1 value of i a a 
3 0 value of i c c 

有使用更長更具描述性的變量沒有傷害或性能下降,這使得它更加明顯,其中問題。例如

char original[] = name.toCharArray(); 

char[] reversed = new char[4]; 
for (int forwards = 0, backwards = 3; forwards < original.length; forwards++, backwards--) { 

    reversed[backwards] = original[forwards]; 
    System.out.println(
      forwards + " " + backwards + " value of i " + original[forwards] + " " + reversed[backwards]); 

} 
2

我想你可以讓你的小很多,那麼你want.If什麼要扭轉這是從產生的炭[]字符串,你可以先倒轉字符串,然後你可以創建數組。

String name="caac"; 
String reverse= new StringBuffer(name).reverse().toString(); 
    char com[]=name.toCharArray();//which contains reversed array 
-1

Simon Asir。 我建議你寫一個函數,一個例子如下演示一下,我不明白的問題(任務),你要解決:

public static void main(String[] args){ 
    String name="something eatable"; 
    char com[]=name.toCharArray(); 
    char[] reversed = reverseArray(com); 
     for (char c:reversed) 
      System.out.print(c+" "); 
    System.out.println(isPalindrome(new char[]{'b','a'})); 
    System.out.println(isPalindrome(new char[]{'a','b','a'})); 
} 
public static char[] reverseArray(char[] arr){ 
    char[] reversed = new char[arr.length]; 
    for (int i=0, j=arr.length-1; i < arr.length; i++, j--){ 
     reversed[i]=arr[j]; 
    } 
    return reversed; 
} 
public static boolean isPalindrome(char[] arr){ 
    for (int head=0, tail=arr.length-1; head<=tail; head++, tail--){ 
     if (arr[head]!=arr[tail]) 
      return false; 
    } 
    return true; 
}