2 ssaypiano ssaypiano 于 2013.12.24 00:20 提问

用javascript写的字符串加密程序运行出错

编程思路:

1、由用户输入要加密的字符串(仅允许小写字母不包含空格)

2、把字符串中的每一个字母按字母表顺序向后移动两位输出新字符串

注释,暂不考虑“溢出”问题(即用户输入了x以后的字母),代码如下:

<script>   
//用split()函数把用户输入的字符串分割并赋值给数组str[]
var str=prompt("请输入要加密的字符串:").split(""); 

//定义包含26个小写字母的alphabet数组
var alphabet=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];

//定义alphabet数组的索引变量i
for(var i=0; i<=25;i++)

//定义str数组的索引变量n
for(var n=0; n<=str.length; n++)

//判断str数组中元素在alphabet中的位置,并往后移2位
if(str[n]==alphabet[i])
str[n]=alphabet[i+2]

//用jon()函数把str数组转换成字符串并赋值给newStr
var newStr=[str[n]].join("");

//输出结果
alert("加密后的新字符串是:"+newStr);
</script>

已经很晚了,我没时间翻书再检查错误了,明天一早我还要去工地搬砖,恳请列位大侠直接帮忙修改成能正确运行的代码,我明天抽空拜研之

1个回答

YangRuiHong
YangRuiHong   2013.12.24 09:01
已采纳

var str=prompt("请输入要加密的字符串:").split("");
var newStr=[];
var alphabet=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
for(var n=0; n<=str.length; n++)
for(var i=0; i<=25;i++)
if(str[n]==alphabet[i])
newStr[n]=alphabet[i+2];

alert("加密后的新字符串是:"+newStr.join(""))

YangRuiHong
YangRuiHong str[n]是str[]数组的元素,你需要对数组的内存分配这部分知识了解下。
接近 4 年之前 回复
ssaypiano
ssaypiano 感谢YangRuiHong网友!程序能正常运行,但是我还是对我的代码中if(str[n]==alphabet[i]), str[n]=alphabet[i+2],不认为有什么不对的地方,str[n]变量被赋了新值,应该和之前的str[n]变量没有任何关系了,被赋了新值的str[n]又赋值给了newStr[n],那么调用newStr.join("")方法应该出正确的结果才对;这些问题留给我自己学习吧,刚好书里有一章节“变量、作用域和内存问题”,应该就是介绍这方面问题的
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片