2017-03-25 50 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; 
}