[英]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切換。
我將您的代碼復制到我的編輯器中,使用tmp
字段或不使用任何版本都可以正常運行。 您必須使用其他方法發生其他錯誤。
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.