1

我完全不知道为什么charAt()在某些情况下有效,但在其他情况下无效。我在学习 Java 时正在做练习,其中一个是取一个字符串,然后以相反的顺序返回它。

我的工作代码:

public String reverseString(String tempStr){
    int initialindex = tempStr.length()-1;
    int reverseindex = 0;
    char tmp;
    char[] array = new char[tempStr.length()];

    for(int tempchar : array){
        tmp = tempStr.charAt(initialindex);
        array[reverseindex] = tmp;
        initialindex--;
        reverseindex++;
    }
    String returnstr = new String(array);
    return returnstr;
}

我遇到的问题是使用以下for语句打印乱码:

for(int tempchar : array){
    array[reverseindex] = tempStr.charAt(initialindex);
    initialindex--;
    reverseindex++;
}

可能有十几种不同的使用while循环、标准for循环和其他一些丑陋且不起作用的代码版本。为什么我创建一个char tmp字段,将被检查的字符放在该字段中,然后使用该字段将数据输入到数组中?

另外,为什么我不能只使用返回字符串return array.toString();

编辑:我正在使用我今天下载的最新 Eclipse,从 netbeans 切换。

4

4 回答 4

2
  1. 我将您的代码复制到我的编辑器中,无论使用哪个版本,无论tmp有无字段,它都表现良好。您必须使用其他方法犯了其他错误。

  2. Java 不支持漂亮.toString()的数组;任何不覆盖toString的对象都将生成对象的 hashCode 而不是对象的内容/字段,数组在这里也不例外。虽然对于字符数组似乎是明智的,但对 int 数组的相同操作会产生废话;Arrays.toString()查看和之间的区别String.valueOf(array)。在这种情况下,您可能想要使用该String.valueOf方法。

于 2013-04-18T06:54:10.333 回答
0
   public String reverse(String str)
        {
            if(str == null)
            {
               return null;
             }
           byte[] byteArray=  str.getBytes();
           int arrayLastIndex = byteArray.length -1 ;

           for(int i=0 ; i < byteArray.lenght/2: i++)
           {
              byte temp = byteArray[i];
              byteArray[i] = byteArray[arrayLastIndex -i ]
              byteArray[arrayLastIndex - i] = temp;
           }

           return new String(byteArray);
        }
于 2013-04-18T08:01:07.193 回答
0

作为开始的提示:如果要将char数组转换为String使用数组的String构造函数char

更新:我看到您在编辑中已经这样做了。它现在是否按预期工作?

你的循环看起来有点奇怪,因为你从不使用你的循环变量。你可以试试这个:

char[] initialArray = initialStr.toCharArray();
char[] array = new char[tempStr.length()];

for(int srcIndex = 0, destIndex = array.length-1; destIndex >= 0; srcIndex++, destIndex--) {
    array[destIndex] = initialArray[srcIndex];
}
于 2013-04-18T06:50:58.447 回答
0

对象的array.toString()返回字符串表示形式。您需要使用 String 的 char[] 构造函数new String(array)从 char[] 创建 String。

于 2013-04-18T06:52:24.760 回答