我正在编写一个将密文转换为明文的密码程序。根据字母的频率,我手动将所有密码的字母破解为明文,并且没有模式,因此我需要编写一个包含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] 删除。
我来说两句