交换前两个字符,然后使用Java交换String中的下两个字符

Raj*_*eev -2 java string

我一直在尝试这个程序一段时间,但却无法找到合适的解决方案.例如,输入是123456由用户输入的.我想交换前两个字符,然后是接下来的两个字符,依此类推.所以,输出应该是214365.我尝试了以下代码但无法获得所需的输出.

public static void main(String[] arg$) {

    Scanner in = new Scanner(System.in);
    System.out.println("enter a word: ");
    String str = in.nextLine();

    char[] arr = str.toLowerCase().toCharArray();
    char temp1, temp2;
    for (int i = 0; i < arr.length; i++) {

        try {
            if ((i % 2) == 0) {
                temp2 = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp2;
            } else {
                System.out.println(Arrays.toString(arr));
                temp1 = arr[i + 1];
                arr[i + 1] = arr[i+2];
                arr[i + 2] = temp1;

            }

        } catch (Exception e) {

        }
    }
    System.out.println("The final String is : =\n\n");
    for (int j = 0; j < arr.length; j++) {
        System.out.println(arr[j]);
    }
}
Run Code Online (Sandbox Code Playgroud)

样本输入:

123456

样本输出:

213456

Era*_*ran 5

你用第二个字符交换第一个字符,然后用第三个字符交换第二个字符,依此类推.这不是你应该做的.

对于n个字符的字符串,最多应该有n/2个交换(如果n是奇数,则交换的数量将小于n/2).

for (int i = 0; i < arr.length; i+=2) {
    if (i + 1 < arr.length) {
        temp2 = arr[i];
        arr[i] = arr[i + 1];
        arr[i + 1] = temp2;
    }
}
Run Code Online (Sandbox Code Playgroud)