如何在Java中用循环替换字母?

Zecheng Li :

我正在编写一个将密文转换为明文的密码程序。根据字母的频率,我手动将所有密码的字母破解为明文,并且没有模式,因此我需要编写一个包含26次的循环,以将字符串中的每个字母转换为另一个字母。

我的第一次尝试是在Java中使用replace语句,就像这样

str=str.replaceAll("A","E");

问题是,例如,我输入了这样的字符串,abc而我的键将是这样的:“用c替换a,用p替换b,用q替换c”。我想要的输出应该是cpq,但是我得到的输出是qpq这意味着我希望它像一次转换一样。

所以我正在尝试使用if

我这样做的方式是:

for (i=1;i<string.length;i++)
    if (char[i]=="a")
        char [i] ="b";

该错误告诉我无法将字符串转换为char。而且,我想问一下是否将其他25个if语句放入此语句中或使它们混乱?

马文:

要回答问题的第二部分:我不会if在循环中添加25条单个语句,而是使用a Map<Character, Character>来存储您的替换项。

完整的解决方案如下所示:

public static void main(String[] args) {
    Map<Character, Character> replacements = new HashMap<>();
    replacements.put('a', 'c');
    replacements.put('b', 'p');
    replacements.put('c', 'q');

    String input = "abcd";
    StringBuilder output = new StringBuilder();
    for (Character c : input.toCharArray()) {
        output.append(replacements.getOrDefault(c, c));
    }
    System.out.println(output.toString());
}

这将保留您没有替代字符。输出:

cpqd

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章