簡體   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