我正在编写代码来破译消息。为此,您输入一个字符串,它以以下方式输出:b 变为 a,c 变为 b 等等。同样对于数字,2 变为 1,3 变为 2。
最佳答案
方法String.replace(char,char)
用新字符替换所有出现的给定字符。
例如,假设您有一个类似“talk to the裁缝”的字符串,并且您对其运行 replace('t','w')
,您会得到“walk wo whe”水手”。
但这意味着一旦您到达已替换的字母,您将再次替换它们 - 返回另一个字母。
您不应该为此使用replace
。最好的办法可能是使用 StringBuilder
并在破译后将每个字母附加到它。
另请注意,仅仅为了找到该字母而遍历整个字母表是非常浪费的。首先,String
类中已经有这样一个方法,名为indexOf
。其次,对于英文字母和数字,字符unicode值是连续的。这意味着您只需从 b
减去一即可得到 a
:
char ch = 'b';
ch = (char)(ch - 1);
这将为您提供 ch
中的 a
。所以你需要做的就是确保该字符在给定的范围内,然后从中减去 1。
关于java - 如何实现凯撒密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33701683/