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

标签 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[] 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”循环中一次初始化两个变量吗?我哪里缺少逻辑?

最佳答案

当您将最后一个分配给第一个时,您会丢失该字符,您应该将其保留在临时位置并分配给其他。

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;
}

关于java - for循环中同时初始化两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21220876/

相关文章:

java - GWT 客户端的 YouTube 身份验证

java - 如何使用 Java 获取给定证书文件的私钥

arrays - 如何从 $names[]、$surnames[] 生成唯一的全名?

c# - 不能在 ArrayList 和 Array 之间应用 ??-operator

c# - 从 txt 文件创建二维数组

Java检查两个日期作为字符串

c++ - 将二维字符串数组传递给 C++ 中的函数

java - 当存储库不再可用时,Maven 可以使用本地 jar 进行构建吗?

java - 将 JSON 对象数组转换为列表<String>

java - 什么时候抛出 "java.io.IOException:Connection reset by peer"?