我想編寫一個字符串反轉的代碼。兩個變量初始化立即在for循環
我知道有很多方法。不過,我想嘗試使用陣列。但是我的輸出有問題。
以下是我的代碼:
package practice_package;
public class Practice_Class {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 = "Jeevan";
char[] a = s1.toCharArray();
String s2 = "satyasahithi";
char[] b = s2.toCharArray();
String rs1 = new String(reverse(a));
System.out.println("The reverse of '" + s1 + "' is: '" + rs1 + "'");
String rs2 = new String(reverse(b));
System.out.println("The reverse of '" + s2 + "' is: '" + rs2 + "'");
}
public static char[] reverse(char[] args) {
char[] r = args;
int i,j;
for(i=args.length-1,j=0; i>=0 && j<args.length; i--, j++) {
r[j]= args[i];
}
System.out.println(r);
return r;
}
}
而且我的輸出是:
navvan
The reverse of 'Jeevan' is: 'navvan'
ihtihaahithi
The reverse of 'satyasahithi' is: 'ihtihaahithi'
正如你所看到的,只有字符串的前半部分被而下半場仍然是它扭轉是。 代碼中有什麼問題。我可以在'for'循環中同時初始化兩個變量嗎?我在哪裏錯過了邏輯?
您需要創建一個單獨的'char'數組來存儲結果。現在你的算法正在讀取和寫入同一個數組。你的第一個賦值'char [] r'不會創建'args'的副本。它實際上是對同一個數組對象的另一個引用。 – tiguchi
@NobuGames呀!得到它了。謝謝! :)現在我記得當我們將一個變量等於另一個變量時,只會引用值而不是創建新的內存。 –