我是java的初学者,现在我一直试图交换其他所有的信件。例如,如果输入是: 宝宝 我希望输出为: abyb
但我似乎无法做到这一点。这是我的代码,
String str = "baby";
int lee =0;
int le = 0;
for ( le = 1; le <= str.length(); le +=2) {
System.out.print(str.charAt(le));
for ( lee = 0; lee < str.length(); lee +=2) {
System.out.print(str.charAt(lee));
}}
提前完成
答案 0 :(得分:4)
使用正则表达式替换非常容易:
String input = "baby";
input = input.replaceAll("(.)(.)", "$2$1");
System.out.println(input);
abyb
如果您真的想通过循环执行此操作,请使用StringBuilder
,并在向下走输入时只需两步:
String input = "baby";
StringBuilder sb = new StringBuilder("");
for (int i=0; i < input.length()-1; i=i+2) {
sb.append(input.charAt(i+1));
sb.append(input.charAt(i));
}
// edge case: for odd-length inputs, we don't swap the final letter
// but we still add it to the end of the string
if (input.length() % 2 != 0) sb.append(input.charAt(input.length()-1));
System.out.println(sb);
答案 1 :(得分:3)
如果你想学习循环,你只需要一个:
public static void main(String[] args)
{
String str = "baby";
for (int i = 1; i <= str.length(); i +=2) {
if(i<str.length())
System.out.print(str.charAt(i));
System.out.print(str.charAt(i-1));
}
}
你在每次迭代时提前2个索引,得到两个字母并交换它们。检查长度不是超出范围,因为如果你有一个奇怪的字符串长度,你会连续2个索引。
对于超酷的递归解决方案:
public static void main(String[] args)
{
printSwapped("baby");
}
static void printSwapped(String str) {
if(str.length()<=1) {
System.out.print(str);
}else {
System.out.print(str.charAt(1));
System.out.print(str.charAt(0));
printSwapped(str.substring(2));
}
}