如何修改Java凯撒密码代码实现字符左移2位?
修改凯撒密码代码实现左移2位
要将现有右移2位的凯撒密码代码改成左移2位,核心是调整字符偏移方向并修正边界判断逻辑,同时补充非字母字符的保留处理(原代码未区分字母与非字母,会导致空格、标点偏移错误)。
修改后的完整代码
public static void main(String[] args) { System.out.println(caesarEncrypt("Jgnnq vjgtg!", 2)); } public static String caesarEncrypt(String ss, int shift){ String s = ""; int len = ss.length(); for(int x = 0; x < len; x++){ char current = ss.charAt(x); // 仅对小写字母执行偏移操作 if (current >= 'a' && current <= 'z') { char c = (char)(current - shift); // 处理左移后超出字母表下限的情况 if (c < 'a') { s += (char)(current + (26 - shift)); } else { s += c; } } else { // 非小写字母直接保留原字符 s += current; } } return s; }
关键修改点
- 偏移方向调整:原代码通过
+ shift实现右移,左移需要改为- shift,即减少字符的ASCII值。 - 边界判断修正:原代码判断右移是否超出
'z',左移需要判断是否低于'a';若超出下限,通过+ (26 - shift)将字符绕回字母表末尾(比如'a'左移2位变为'y')。 - 非字母字符处理:新增判断逻辑,仅对小写字母执行偏移,空格、标点等非字母字符直接保留,确保与示例输出一致。
测试验证
调用caesarEncrypt("Jgnnq vjgtg!", 2)会输出Hello there!,符合左移2位的预期结果。
内容的提问来源于stack exchange,提问作者gaming With HENEy
相关产品推荐
相关产品推荐

