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

求助:修复JavaScript实现Caesar Cipher转换的代码并排查错误

凯撒密码(ROT13)代码错误分析与修正

代码中的核心错误:

  • 循环变量重名:内外层循环都使用了变量i,内层循环会直接覆盖外层的i值,导致外层循环逻辑完全混乱,无法正确遍历字符串的每个字符。
  • 字符串不可变+赋值逻辑错误:JavaScript中字符串是不可变类型,str.charAt(i)仅能读取字符,无法直接修改原字符串;同时代码里误用了比较运算符==,而非赋值运算符=,就算字符串可变也无法完成替换。
  • 提前返回打断流程:内层循环的else分支直接return str.charAt(i),会导致第一个不匹配的字符(比如空格)就终止函数,后续字符完全无法处理。
  • 循环边界错误:外层循环条件i < str.length-1会漏掉字符串的最后一个字符,正确边界应为i < str.length。

修正后的代码:

let abcToCesar = [
  {abc: "A", cesar: "N"},
  {abc: "B", cesar: "O"},
  {abc: "C", cesar: "P"},
  {abc: "D", cesar: "Q"},
  {abc: "E", cesar: "R"},
  {abc: "F", cesar: "S"},
  {abc: "G", cesar: "T"},
  {abc: "H", cesar: "U"},
  {abc: "I", cesar: "V"},
  {abc: "J", cesar: "W"},
  {abc: "K", cesar: "X"},
  {abc: "L", cesar: "Y"},
  {abc: "M", cesar: "Z"},
  {abc: "N", cesar: "A"},
  {abc: "O", cesar: "B"},
  {abc: "P", cesar: "C"},
  {abc: "Q", cesar: "D"},
  {abc: "R", cesar: "E"},
  {abc: "S", cesar: "F"},
  {abc: "T", cesar: "G"},
  {abc: "U", cesar: "H"},
  {abc: "V", cesar: "I"},
  {abc: "W", cesar: "J"},
  {abc: "X", cesar: "K"},
  {abc: "Y", cesar: "L"},
  {abc: "Z", cesar: "M"},
]

function toCaesar(str) {
  let result = '';
  // 遍历输入字符串的每个字符
  for(let i = 0; i < str.length; i++){
      const currentChar = str.charAt(i);
      let found = false;
      // 遍历映射数组找对应替换字符
      for(let j = 0; j < abcToCesar.length; j++){
          if(currentChar === abcToCesar[j].abc){
              result += abcToCesar[j].cesar;
              found = true;
              break; // 找到匹配就跳出内层循环
          }
      }
      // 未找到匹配(如空格)则保留原字符
      if(!found){
          result += currentChar;
      }
  }
  return result;
}

console.log(toCaesar("SERR PBQR PNZC")); // 输出: FREE CODE CAMP

内容的提问来源于stack exchange,提问作者Hans Udo Wolfrahm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:08:21