Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Caesar Cypher仅输出空字符串_Javascript_Arrays_Loops - Fatal编程技术网

Javascript Caesar Cypher仅输出空字符串

Javascript Caesar Cypher仅输出空字符串,javascript,arrays,loops,Javascript,Arrays,Loops,我想在JS中创建一个凯撒密码。它应该取一个字符串和一个数字,将字符串中的每个字母在字母表中按提供的数字移动,然后返回密码字符串 我编写了一些代码,将每个字母更改为ASCII码,然后向其中添加输入数字,并将其转换回字符串。但是,当我运行代码时,得到的只是一个空字符串 我的代码如下。(是的,我知道它可以压缩,但我对JS还是相当陌生) const caesar=函数(字符串,num){ 让我们一起来解决这个问题吧; 让stringArray=Array.from(string); 设asciiArr

我想在JS中创建一个凯撒密码。它应该取一个字符串和一个数字,将字符串中的每个字母在字母表中按提供的数字移动,然后返回密码字符串

我编写了一些代码,将每个字母更改为ASCII码,然后向其中添加输入数字,并将其转换回字符串。但是,当我运行代码时,得到的只是一个空字符串

我的代码如下。(是的,我知道它可以压缩,但我对JS还是相当陌生)

const caesar=函数(字符串,num){
让我们一起来解决这个问题吧;
让stringArray=Array.from(string);
设asciiArray=[];
for(设i=stringArray[0];i如果(asciiNum>=65&&asciiNum=97&&asciiNum您的代码有很多错误

1) 您的拼写错误为
charChodeAt

2) 您没有向数组中添加任何内容(您需要
元素推送到数组中)

3) 与之相反的是最终循环所需的

4) 您应该查看这两种方法的文档,因为您使用的
charCodeAt
方式不正确

5) 你不需要那张地图

6) 您需要为
join
指定分隔符

除此之外,一切都很好

const caesar=函数(字符串,num){
让我们一起来解决这个问题吧;
让stringArray=Array.from(string);
设asciiArray=[];
for(设i=0;i如果(asciiNum>=65&&asciiNum=97&&asciiNum这个问题给了我们一个小挑战:
caesar(“a”,1)
给了
“b”
caesar(“a”,5)
给了
“f”
,那么
caesar(“x”,5)

当一个字母移到
“z”
之外时,表示它应该绕到开头:
ceaar(“x”,5)
将转到
x->y->z->a->b->c
,最终结果是
“c”
。我们要确保我们的程序对小写和大写字母都有这种行为

对于这类问题,与其编写一个大函数来完成所有工作,不如将其分解为更小的部分-

const toAscii=(char=”“)=>
char.charCodeAt(0)
常量fromscii=(n=0)=>
String.fromCharCode(n)
常量shiftAscii=(a=0,shift=0)=>
换挡手(a,换挡)| |换挡手(a,换挡)| | a
常数移位下限=(a=0,移位=0)=>
a>=65&&a
a>=97&&a
排列
.from(str,char=>fromscii(shiftAscii(toAscii,char,num)))
.join(“”)
log(caesarShift(“你好,世界!”,1))
//如果是,Xpsme!
log(caesarShift(“你好,世界!”,10))

//Rovvy,Gybvn!
你的意思是在这里推进ascii数组吗:asciiArray+=asciiNum;阅读调试代码的技巧。作为一名初学者,这是你要学习的最重要的技能之一。这不是一个合适的凯撒密码;
Caesar(“javascript”,10)
产生
“tk}m|sz~”
(其中,
\uuu
是一个无法打印的字符)。预期结果是
“tkfkcmbszd”
我知道,但我是根据OP所写的内容编写的。代码是一个“破碎”想法的产物;修复源代码,而不是副作用。这不是问题所要问的。