如何在Java中交换其他每个字母/字符?
我是java的初学者,现在我一直在尝试交换其他字母。例如,如果输入为: 宝贝 我希望输出为: abyb 但我似乎不明白。这是我的密码如何在Java中交换其他每个字母/字符?,java,string,Java,String,我是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.
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));
}}
String str=“baby”;
int-lee=0;
int-le=0;
对于(le=1;le而言,使用正则表达式替换非常容易:
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);
String input=“baby”;
StringBuilder sb=新的StringBuilder(“”);
对于(int i=0;i
如果你想学习循环,你只需要一个:
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));
}
}
publicstaticvoidmain(字符串[]args)
{
String str=“baby”;
对于(int i=1;我可以解释一下什么东西在代码中不起作用?为什么是两个循环?顺便说一句,您不希望le
等于str.length
,最后一个char
位于str.length()-1
使用tities的最佳解决方案:)你得到我的选票了吗that@VeselinDavidov我想把它们看作是眼球:-这个正则表达式解决方案上的PBravo,尽管它导致了一种普遍的错觉,即任何问题都可以用正则表达式解决;->你的第一个解决方案忽略了奇数字符串的边缘情况,但是你的递归解非常酷+1。是的,我注意到了这个问题在我输入并编辑它之后,就出现了奇数:(你总是急于第一个提供帮助,这样的错误就会发生
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));
}
}