关键是
str[n]==alphabet[i]&&i+5<=25 是 true flase; switch(str[n]) str[n] 是字符。
str[n]==alphabet[i]&&i+5<=25 是 true flase; switch(str[n]) str[n] 是字符。
解决方案 »
- 为什么没出来效果啊
- settimeout中的一点问题
- 一个莫名其妙的javascript错误!
- 如何选中一个span对象进行拖曳操作
- 字符型转换成数字不成功!请教!!!急
- 如何清空 <INPUT id="file3" TYPE="file" NAME=""> 的内容, 就是选择文件路径之后的内容。
- 框架控制的问题(急,在线等)
- 什么技术上传数据最快,能够超过outlook上传附件的速度?
- =============return false 不起作用了=============================
- tiny_mce 编辑器theme_advanced_fonts 字体怎么设置啊
- json节点问题
- 求:js随机生成0-51之间30个不同的数字
newStr[n]=alphabet[i+5];case后面都直接是值了,你怎么能在这里判断呢。case是判断str[n]是不是等于case后面的值,才执行相关的case语句你这里可好,直接在case后面做起了赋值语句。
for (var i = 0; i <= 25; i++)
switch (str[n]) {
case str[n] == alphabet[i] && i + 5 <= 25 ? newStr[n] = alphabet[i + 5] : false: break;
case str[n] == alphabet[i] && i + 5 > 25 ? newStr[n] = alphabet[i + 5 - 26] : false:
} alert("加密后的新字符串是:" + newStr.join(""));用?: 3元运算符来实现,不过代码维护起来有够恶心的
case i+5<=25:
newStr[n]=alphabet[i+5];
break;
case i+5>25:
newStr[n]=alphabet[i+5-26];
}
<script type="text/javascript">
var str = ['e','w','y']; 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]) {
switch(i + 5 <= 25){
case true: newStr[n] = alphabet[i + 5];
break; case false: newStr[n] = alphabet[i + 5 - 26];
break;
}
}
}
}
alert("加密后的新字符串是:" + newStr.join(""));
</script>
//小写字母表
var smallAlphabet = ["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"];
//大写字母表
var capitalAlphabet=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","V","U","W","X","Y","Z"];
for (var n=0; n <= str.length; n++) for (var i=0; i<=25; i++)
switch (true) { case str[n] == smallAlphabet[i] && i+5<=25: newStr[n] = smallAlphabet[i+5]; break; case str[n] == smallAlphabet[i] && i+5 >25:
newStr[n] = smallAlphabet[i+5-26]; break; case str[n] == capitalAlphabet[i] &&i+5 <= 25: newStr[n] = capitalAlphabet[i+5]; break; case str[n] == capitalAlphabet[i] && i+5 >25: newStr[n] = capitalAlphabet[i+5-26]; break;
//如果str[]既不在小写字母表中,也不在大写字母表中
case str[n]!=smallAlphabet[i]&&str[n]!=capitalAlphabet[i]:
newStr[n]=str[n]; break;
} alert("加密后的新字符串是:" + newStr.join(""));</script>
如果去掉switch()中最后一段代码: //如果str[]既不在小写字母表中,也不在大写字母表中
case str[n]!=smallAlphabet[i]&&str[n]!=capitalAlphabet[i]:
newStr[n]=str[n];
去掉这段代码程序能正常区分输入字母的大小写并加密,加上这段代码就出错,请列位老师给看看问题出在那里
你学会switch的用法,再来写写吧。
var capitalAlphabet=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","V","U","W","X","Y","Z"];
for (var n=0; n < str.length; n++)
loop_1:
for (var i=0; i<=25; i++) switch (true) { case str[n] == smallAlphabet[i] && i+5<=25: newStr[n] = smallAlphabet[i+5]; break loop_1; case str[n] == smallAlphabet[i] && i+5 >25: newStr[n] = smallAlphabet[i+5-26]; break loop_1; case str[n] == capitalAlphabet[i] &&i+5 <= 25: newStr[n] = capitalAlphabet[i+5]; break loop_1; case str[n] == capitalAlphabet[i] && i+5 >25: newStr[n] = capitalAlphabet[i+5-26]; break loop_1;
case str[n]!=smallAlphabet[i]&&str[n]!=capitalAlphabet[i]: newStr[n]=str[n]; break; } alert("加密后的新字符串是:" + newStr.join(""));</script>