为了账号安全,请及时绑定邮箱和手机立即绑定

不知道如何操作字符串

不知道如何操作字符串

拉丁的传说 2021-11-17 15:41:27
将一个字符串作为输入 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 ,输出应该是 -->坏的。
查看完整描述

3 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

您只需要迭代一次但执行不同的操作(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);

    }

}


查看完整回答
反对 回复 2021-11-17
?
精慕HU

TA贡献1845条经验 获得超8个赞

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


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

  }

}


查看完整回答
反对 回复 2021-11-17
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我将“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();

}


查看完整回答
反对 回复 2021-11-17
  • 3 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信