不知道如何操作字符串

时间:2018-10-14 18:29:36

标签: java string character

将字符串作为输入S。编写一个函数,用具有较高ASCII码的字符替换每个奇数字符,并用具有较低ASCII码的字符替换每个偶数字符。打印返回的值。

 package assignments;

 import java.util.Scanner;

 public class strings_odd_even_char {
     static Scanner scn = new Scanner(System.in);

     public static void main(String[] args) {
         String str = scn.nextLine();

         for (int i = 0; i < str.length(); i = i + 2) {
             char ch = str.charAt(i);
             ch = (char)((ch + 1));
             System.out.println(ch);
         }
         for (int j = 1; j < str.length(); j = j + 2) {
             char ch = str.charAt(j);
             ch = (char)((ch - 1));
             System.out.print(ch);
         }

     }

 }

我的代码的问题是,它首先打印所有奇数字符的值,然后打印偶数字符,但是我想要的是按正确的顺序打印它们,例如输入-> abcg,输出应该是-> badf。

5 个答案:

答案 0 :(得分:2)

只需使用一个处理两个字符的循环:

for (int i = 0; i < str.length(); i = i + 2) {
  char ch = str.charAt(i);
  ch = (char) (ch + 1);
  System.out.print(ch);

  if (i + 1 < str.length()) {
    ch = str.charAt(i + 1);
    ch = (char) (ch - 1);
    System.out.print(ch);
  }
}

答案 1 :(得分:2)

您只需要迭代一次,但根据(char+1)进行不同的操作(char-1)i

public static void main(String[] args) {
    String str = scn.nextLine();

    for(int i = 0; i < str.length(); i++) {
        char ch = str.charAt(i);
        if(i % 2 == 0) { // even
            ch += 1;
        } else {         // odd
            ch -= 1;
        }
        System.out.print(ch);
    }
}

答案 2 :(得分:2)

我将在变量中保存“ incremenet”值,并在输入字符时在+1-1之间进行替换:

private static String change(String s) {
    StringBuilder sb = new StringBuilder(s.length());
    int increment = 1;
    for (int i = 0; i < s.length(); ++i) {
        sb.append((char)(s.charAt(i) + increment));
        increment *= -1;
    }
    return sb.toString();
}

答案 3 :(得分:1)

您正在使用两个循环,但只需要一个。您可以使用%运算符来判断i是偶数还是奇数,然后相应地减去或相加:

for (int i = 0; i < str.length(); i++) {
   char ch = str.charAt(i);
   if(i % 2 == 0) {
      ch = (char)((ch + 1));
      System.out.println(ch);
   } else {
      ch = (char)((ch - 1));
      System.out.print(ch);
   }
}

答案 4 :(得分:1)

您可以在一个for loop中执行此操作,为此,您需要检查当前索引是偶数还是奇数。如果当前索引为偶数,则将增加char并打印;如果当前索引为奇数,则将减少char并打印。使用%运算符检查偶数还是奇数

for (int i = 0; i < str.length(); i++) {
   char ch = str.charAt(i);
   if(i%2 == 0)   {         
      ch = ch + 1;
      System.out.println(ch); 
      continue;
    }
  ch = ch - 1;
  System.out.println(ch);
}