我正在编写一个密码学程序,将密文转换为明文。根据字母的频率,我手动将密码的所有字母破解为明文,并且没有模式,所以我需要编写一个包含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语句放在这个语句中还是并行它们?
不能将字符串转换为字符。所以你要么使用所有字符串,要么使用所有字符。不必对字符串使用双引号,可以对char使用单引号,如下所示:
char[i]=='b'
和
char[i] = 'b';
此外,您可以使用switch语句,也可以创建并使用映射将转换存储在键/值对中,而不是使用长if/else语句。
你可以解决这个问题:
String str = "abc";
char [] ch = str.toCharArray();
for(int i=0; i<str.length(); i++){
if('a'==str.charAt(i)){
ch[i] = 'c';
}
if('b'==str.charAt(i)){
ch[i] = 'p';
}
if('c'==str.charAt(i)){
ch[i] = 'q';
}
}
System.out.println(String.valueOf(ch));
回答问题的第二部分:我不会在循环中添加25条if
语句,而是使用映射
完整的解决方案可能如下所示:
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
在我的任务中,当用户试图输入一些值时,我需要放置InputMismatchException。用户获取从1到某个数字的一些数字(simptoms.lenght)。 在这段代码之后,我尝试了这样做:我尝试了try(!scanner.hasnextInt()),而不是while(!scanner.hasnextInt),我得到了以下消息:
问题内容: 我有下面的简单代码,我试图将其转换为功能样式 是否可以轻松地用流替换此循环?我看到的唯一选择是使用两个不同的过滤条件在流上迭代两次。 问题答案: 听起来您可以只使用以下条件: 简短但完整的示例,将短字符串映射为小写,将长字符串映射为大写:
问题内容: 我试图将字符串分成数组并替换为,但无法做到,我也尝试了String.replaceAll这样的东西。 我想提供一个通往JNI的路径,并且它只能以这种方式读取。 问题答案: 在这种情况下不要使用- 这是用正则表达式指定的,这意味着您需要更多的转义。这应该很好: 请注意,由于Java字符串文字中的原因,反斜杠加倍-因此此处涉及的 实际 字符串是“单反斜杠”和“双反斜杠”-而不是双倍和四倍。
问题内容: 我正在尝试使用flatmap与Stream API进行嵌套循环,但似乎无法弄清楚。作为示例,我想重新创建以下循环: 我可以这样做,但这看起来很丑: Flatmap看起来很有希望,但是如何在外循环中访问变量? 输出: 问题答案: 您必须在阶段中创建所需的元素,例如:
问题内容: 如何在Java中用空字符串替换单引号’。我尝试了以下操作,但似乎没有用。 提前致谢。非常感谢您的帮助。(输出应为:Sids den) 谢谢你们的回应。我想我应该对我的问题更加清楚。基本上,我从表中获得特殊字符,并且从同一个表中我们必须用什么值替换那些特殊字符。这是代码片段: 因此,当数据中的evrf有特殊字符’时,我将面临nullpointer异常。请建议如何进行此操作? 问题答案:
问题内容: 例如 :- 彼此替换字符。 输出 我该怎么做而没有任何循环? 问题答案: 一种方法是使用流。和地图: 那打印