Java 将字符反向复制到字符数组 公共类回文{ 公共静态void main(字符串参数[]){ String name=“caac”; char com[]=name.toCharArray(); char[]con=新字符[4]; 因为(int i=0,j=3;i

Java 将字符反向复制到字符数组 公共类回文{ 公共静态void main(字符串参数[]){ String name=“caac”; char com[]=name.toCharArray(); char[]con=新字符[4]; 因为(int i=0,j=3;i,java,Java,看起来像是com,con和i和j混在一起。我强烈建议不要同时使用i和j,即使教科书也这样做。使用i和k代替,或者更好的是使用能代表变量用途的东西,com和con也很相似 如果您更改为: public class palindrome { public static void main(String args[]) { String name="caac"; char com[]=name.toCharArray(); char[] con=new char

看起来像是com,con和i和j混在一起。我强烈建议不要同时使用i和j,即使教科书也这样做。使用i和k代替,或者更好的是使用能代表变量用途的东西,com和con也很相似

如果您更改为:

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]);

     }

   }
}
显示此输出,这是您所期望的吗

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=新字符[4];
对于(int forwards=0,backwards=3;forwards
对线路上的现有代码进行小的修正

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]);

}

效果很好

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

我认为您可以使字符串比所需的小得多。如果要反转从字符串创建的char[],可以先反转字符串,然后创建数组

  StringBuffer sb = new StringBuffer(name);
  char reverse[] = sb.reverse().toString().toCharArray();
西蒙·阿瑟。 我建议您编写一个函数,下面给出了一个示例演示它,我不理解您正在解决的问题(任务):

String name="caac";
String reverse= new StringBuffer(name).reverse().toString();
  char com[]=name.toCharArray();//which contains reversed array
publicstaticvoidmain(字符串[]args){
String name=“可以吃的东西”;
char com[]=name.toCharArray();
char[]reversed=reversearlay(com);
for(字符c:反向)
系统输出打印(c+“”);
System.out.println(isPalindrome(新字符[]{'b','a'}));
System.out.println(isAlindrome(新字符[]{'a','b','a');
}
公共静态字符[]反转array(字符[]arr){
char[]reversed=新字符[arr.length];
对于(int i=0,j=arr.length-1;i对于(int head=0,tail=arr.length-1;head还有一种反转字符数组的方法:

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;
}
String name="caac";
String reverse= new StringBuffer(name).reverse().toString();
  char com[]=name.toCharArray();//which contains reversed array
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;
}
public char[] reverseArray(char[] source) {
    char[] reversed = new char[source.length];
    IntStream.range(0, source.length).forEach(i -> reversed[source.length - 1 -i] = source[i]);
    return reversed;
}