【发布时间】:2023-03-08 01:07:01
【问题描述】:
我想写一个字符串反转的代码。
我知道有很多方法。但是,我想尝试使用数组。但我的输出有问题。
以下是我的代码:
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的副本。它实际上是对同一个数组对象的另一个引用。 -
@NobuGames 是的!知道了。谢谢! :) 现在我记得当我们将一个变量与另一个变量相等时,只会发生值的引用而不是创建新的内存。
标签: java arrays string for-loop