首页 > 解决方案 > Java程序中偶数索引的问题

问题描述

该方法采用 2 个参数 (String,char) 并返回用 char 替换的字符串,'+'如果 index 是偶数,'#'如果 index 是奇数。

我使用的字符串是"Mary Bella Abracadabra",预期的输出是"M+ry Bell+ +br#c#d#br+"。相反,我得到"M#ry Bell# #br#c#d#br#".

我在我的代码中找不到错误。似乎找到 char ch 的所有索引都是奇数。

public String emphasize (String phrase, char ch){
    String phraseEmph = "";
    char c1 = '#';
    char c2 = '+';
    for (int i=0; i < phrase.length(); i++){
         char c = phrase.charAt(i);
         char cc = Character.toLowerCase(c);
         if ((cc == ch) && ((i % 2) == 0)){
            phraseEmph = phrase.replace(c,c2);
            phrase = phraseEmph;   
            }
         else if ((cc == ch) && ((i % 2)!= 0)){
            phraseEmph = phrase.replace(c,c1);
            phrase = phraseEmph;   
            }  
         phrase = phrase; 
    }
    return phrase;
}

public void testEmphasize(){
    String phrase = "Mary Bella Abracadabra";
    char ch = 'a';
    String Emphasized = emphasize(phrase,ch);
    System.out.println("Emphasized : " + Emphasized);
}

标签: java

解决方案


当您调用replace它时,它不仅会替换 current 'a',还会替换所有这些。您需要找到一种不同的方法来替换字符,以便一次只更改一个。

(我故意避免提出修复建议。如果你自己想出它会更有教育意义。)


推荐阅读