Java for循环中同时初始化两个变量

Java for循环中同时初始化两个变量,java,arrays,string,for-loop,Java,Arrays,String,For Loop,我想写一个字符串反转的代码 我知道有很多方法。但是,我想尝试使用数组。但是我的输出有问题 以下是我的代码: package practice_package; public class Practice_Class { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String s1 = "Jeevan"; char[

我想写一个字符串反转的代码

我知道有很多方法。但是,我想尝试使用数组。但是我的输出有问题

以下是我的代码:

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;
}
}
如您所见,只有字符串的前半部分被反转,而后半部分保持原样。
代码中有什么错误。我可以像那样在“for”循环中同时初始化两个变量吗。我在哪里丢失了逻辑?

当您将last分配给first时,您将丢失字符,您应该将其保留在临时状态并分配给other

for(i=args.length-1,j=0; i>=0 && j<args.length/2; i--, j++) {
    char t = r[j];
    r[j]= r[i];
    r[i] = t;
}
用于(i=args.length-1,j=0;i>=0&&j使用


< > < <代码> > <代码>循环中的逻辑。让我们考虑第一次迭代,其中<代码> i <代码>指向5(在字符串Jeevan的情况下)和<代码> j <代码>指向0。当你说“代码> r[j]=ARGs[i]时
J将被n替换,您将丢失字符J。这是您的逻辑出错的部分。作为解决方案,您可以选择另一个数组并按如下所示进行存储

public static char[] reverse(char[] args) {
char[] r = new char[args.length];
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;
}
publicstaticchar[]reverse(char[]args){
char[]r=新字符[args.length];
int i,j;

对于(i=args.length-1,j=0;i>=0&&j),您需要创建一个单独的
char
数组来存储结果。现在您的算法正在读取和写入同一数组。您的第一个赋值
char[]r
不会创建
args
的副本。它实际上是对同一数组对象的另一个引用。@NobuGames是的!明白了。谢谢!:)现在我记得当我们将一个变量与另一个变量相等时,只会引用值,而不会创建新内存。非常感谢!:)但仍然没有得到你所做的逻辑…将尝试理解!非常棘手!:P
String s1 = "Jeevan";
StringBuffer a = new StringBuffer(s1);
System.out.println(a.reverse());
public static char[] reverse(char[] args) {
char[] r = new char[args.length];
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;
}