首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复字母表

重复字母表
EN

Stack Overflow用户
提问于 2018-02-21 01:38:54
回答 1查看 61关注 0票数 2

我是一个初学者程序员,我知道这可能是一个简单的问题,我有困难理解逻辑。我正在开发一个用ROT13密码破译凯撒密码的程序。这是FreeCodeCamp的任务之一。但在我的技能水平上,他们的解决方案对我来说很难理解,所以我想用我自己的方式。我设法走了很远,但我偶然发现了一个问题。我正在处理数组,我将返回带有解密消息的数组。在这种情况下,输出应该是F,R,E,E,C,O,D,E,C,A,M,P,但我得到的却是未定义的,"R",未定义,"O",未定义的,"P“。我知道我没有定义,因为在未定义的情况下,j+13大于26,而字母表或数组中只有26个字母。我不知道怎么做,所以在j+13 > 26的情况下,字母表会重复。任何提示都会很有帮助

代码语言:javascript
复制
let str = "SERR PBQR PNZC";
        let strArr = str.split("");
        let alphabet = [];
        let tempArr = [];
        for (i = 65; i <= 90; i++){
            alphabet.push(String.fromCharCode(i))
        }
        for (i = 0; i < strArr.length; i++) {
            for (j = 0; j < alphabet.length; j++) {
                if (strArr[i] === alphabet[j]) {
                    tempArr.push(alphabet[j+13]);

                }

            }

        }
    console.log(tempArr);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-21 01:43:52

alphabet[j+13]通常是未定义的,因为每当j >= 13出现时,j+13都会超过字母表的末尾。您可以使用remainder operator %再次有效地绕回数组的开头,而不是超过数组的结尾。只需将其更改为alphabet[(j+13)%26]

代码语言:javascript
复制
let str = "SERR PBQR PNZC";
        let strArr = str.split("");
        let alphabet = [];
        let tempArr = [];
        for (i = 65; i <= 90; i++){
            alphabet.push(String.fromCharCode(i))
        }
        for (i = 0; i < strArr.length; i++) {
            for (j = 0; j < alphabet.length; j++) {
                if (strArr[i] === alphabet[j]) {
                    tempArr.push(alphabet[(j+13)%26]);

                }

            }

        }
    console.log(tempArr);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48891171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档