我一直在尝试这个程序一段时间,但却无法找到合适的解决方案.例如,输入是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
你用第二个字符交换第一个字符,然后用第三个字符交换第二个字符,依此类推.这不是你应该做的.
对于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)
| 归档时间: |
|
| 查看次数: |
683 次 |
| 最近记录: |