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

Java大一课程加解密作业:输入字符串仅最后一个字符被加密问题求助

代码存在的问题
  • 第一个问题:循环内结果被重复覆盖
    你当前在for循环中对result变量的赋值逻辑是直接覆盖旧值,每次循环都会把前一次处理得到的字符结果清空,仅保留本次循环的字符处理结果,所以最终输出只剩最后一个字符的加密结果。
  • 第二个问题:未完成作业要求的字符数组反转操作
    作业注释明确要求需要先反转字符数组再执行偏移加密,你的代码目前完全没有实现反转逻辑,不符合作业要求。
修正代码示例
public class SimpleCipher {
    // 数组反转方法,符合作业要求单独封装的规则
    private void reverseCharArray(char[] arr) {
        int left = 0;
        int right = arr.length - 1;
        while (left < right) {
            char temp = arr[left];
            arr[left] = arr[right];
            arr[right] = temp;
            left++;
            right--;
        }
    }

    /*
     * 加密方法:先反转字符数组,再逐位偏移2位后转为字符串返回
     */
    public String encode(String text) {
        // 1. 将字符串转为字符数组
        char[] chars = text.toCharArray();
        // 2. 调用反转方法处理字符数组
        reverseCharArray(chars);
        // 3. 遍历数组逐位偏移2位
        for (int i = 0; i < chars.length; i++) {
            // 如果需要处理字母循环(比如z偏移2位到b)可以启用以下判断逻辑
            // if (chars[i] >= 'a' && chars[i] <= 'z') {
            //     chars[i] = (char) ((chars[i] - 'a' + 2) % 26 + 'a');
            // } else if (chars[i] >= 'A' && chars[i] <= 'Z') {
            //     chars[i] = (char) ((chars[i] - 'A' + 2) % 26 + 'A');
            // } else {
            // 非字母直接偏移,可按作业实际要求调整
            chars[i] += 2;
            // }
        }
        // 4. 字符数组直接转为字符串返回
        return new String(chars);
    }

    // 测试用main方法
    public static void main(String[] args) {
        SimpleCipher cipher = new SimpleCipher();
        // 测试输入cookie
        System.out.println(cipher.encode("cookie"));
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:36:02