You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现Caesar cipher解码器输出不符合预期,求排查解决

凯撒密码解码器代码问题排查

核心问题:代码块括号匹配错误

你在if (keyVal < 0)的代码块中,错误地将字符替换和结果拼接逻辑包含在了if的大括号内。这导致只有当计算出的keyVal为负数时,字母字符才会被处理并添加到结果中,其他情况下(keyVal≥0)的字母字符直接被跳过,完全不会出现在最终输出里。这就是测试时大部分字符丢失的根本原因。

修复步骤

  1. 调整if块的闭合括号位置,让字符替换和拼接逻辑在所有字母字符的处理流程中都执行:

    // 原错误代码段
    if (keyVal < 0) {
        keyVal = ALPHABET.length() + keyVal;
    char replaceVal = ALPHABET.charAt(keyVal);
    message += replaceVal;
    }
    
    // 修正后代码段
    if (keyVal < 0) {
        keyVal = ALPHABET.length() + keyVal;
    }
    char replaceVal = ALPHABET.charAt(keyVal);
    message += replaceVal;
    
  2. (可选优化)循环中使用String拼接效率较低,建议改用StringBuilder提升性能:
    将String message = "";替换为StringBuilder message = new StringBuilder();,循环内的message += ...替换为message.append(...);,最后返回message.toString();。

完整修正代码

import java.io.*;
import java.util.*;

public class SimpleDecoder {
    public static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";

    public static String BetterDecrypt(String cipherText, int shiftKey) {
        cipherText = cipherText.toLowerCase();
        StringBuilder message = new StringBuilder();
        for (int ii = 0; ii < cipherText.length(); ii++) {
            char character = cipherText.charAt(ii);
            if (ALPHABET.contains(Character.toString(character))) {
                int charPosition = ALPHABET.indexOf(character);
                int keyVal = (charPosition - shiftKey) % 26;
                if (keyVal < 0) {
                    keyVal = ALPHABET.length() + keyVal;
                }
                char replaceVal = ALPHABET.charAt(keyVal);
                message.append(replaceVal);
            } else {
                message.append(character);
            }
        }
        return message.toString();
    }

    public static void main(String[] args) {
        System.out.println(BetterDecrypt("ab4c", -1));
        // 输出: bc4d(符合预期)
        System.out.println(BetterDecrypt("ab4c", 1));
        // 输出: za4b(符合预期)
    }
}

内容的提问来源于stack exchange,提问作者Jackster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 23:53:16