Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中交换其他每个字母/字符?_Java_String - Fatal编程技术网

如何在Java中交换其他每个字母/字符?

如何在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.

我是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));

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