繁体   English   中英

使用charAt()更改char数组

[英]Using charAt() to change a char array

我完全不知道为什么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();返回字符串return array.toString();

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

  1. 我将您的代码复制到我的编辑器中,使用tmp字段或不使用任何版本都可以正常运行。 您必须使用其他方法发生其他错误。

  2. Java不支持数组的漂亮.toString() ; 任何不覆盖toString的对象都会产生对象的hashCode而不是对象的contents / fields,而数组在这里也不例外。 虽然对于字符数组似乎很合理,但对int数组的相同操作会产生无意义的操作; 查看Arrays.toString()String.valueOf(array)之间的区别。 在这种情况下,您可能希望使用String.valueOf方法。

作为一个提示让你开始:如果你想转换一个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];
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM