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

计算机工程学生求助:使用String方法实现ROT13编码出错排查

你的ROT13编码代码问题分析与修复

先梳理你代码里的核心错误:

  • 方法调用错误:main方法里调用f1(i1),但i1是f1内部的局部变量,main中未定义;且f1声明需要两个参数,你只传了一个,参数数量不匹配。
  • 输入读取限制:input.next()只能读取空格前的单个单词,输入带空格的句子会被截断,应该用input.nextLine()。
  • 冗余参数:f1的第二个参数a完全未使用,直接删除即可。
  • 运算符误用:判断条件里用了位运算符&,应该换成逻辑与&&,避免不必要的条件判断。
  • 返回值不匹配:f1声明返回String,但当前代码直接打印字符,没有构建并返回结果字符串。
  • 代码结构不完整:for循环和f1方法都缺少闭合的大括号}。

修正后的完整代码

import java.util.Scanner;

public class ROT13Encoder {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入要编码的字符串:");
        String word = input.nextLine();
        System.out.println(f1(word));
        input.close();
    }

    public static String f1(String word) {
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < word.length(); i++) {
            char c = word.charAt(i);
            if (c >= 'a' && c <= 'm') {
                c += 13;
            } else if (c >= 'A' && c <= 'M') {
                c += 13;
            } else if (c >= 'n' && c <= 'z') {
                c -= 13;
            } else if (c >= 'N' && c <= 'Z') {
                c -= 13;
            }
            // 非字母字符直接保留
            result.append(c);
        }
        return result.toString();
    }
}

关键修改说明

  1. 用input.nextLine()替换input.next(),支持读取带空格的完整字符串。
  2. 删掉f1的冗余参数a,调整方法调用为f1(word)。
  3. 使用StringBuilder构建结果字符串,符合方法返回String的要求,避免直接打印。
  4. 将位运算符&替换为逻辑与&&,优化条件判断逻辑。
  5. 补全所有缺失的大括号,保证代码结构完整。
  6. 添加input.close()关闭输入流,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:50:24