【发布时间】:2016-02-17 00:00:01
【问题描述】:
问题是:
使用 JavaScript,让函数 LetterChanges(str) 接受正在传递的 str 参数,并使用以下算法对其进行修改。将字符串中的每个字母替换为字母表中紧随其后的字母(即,c 变为 d,z 变为 a)。然后将这个新字符串中的每个元音(a、e、i、o、u)大写,最后返回这个修改后的字符串。
function LetterChanges(str){
var result = "";
for(var i = 0; i < str.length; i++) {
var letters = str[i];
if (letters == "a"|| letters == "e"|| letters == "i"|| letters == "o"|| letters =="u") {
letters = letters.toUpperCase();
result+=letters;
} else if (letters == "z") {
letters = "a";
} else {
var answer = "";
var realanswer="";
for (var i =0;i<str.length;i++) {
answer += (String.fromCharCode(str.charCodeAt(i)+1));
}
realanswer += answer
}
}
return realanswer;
return result;
}
LetterChanges();
基本上,如果将 return realanswer 放在返回结果之前,并且使用“o”调用 LetterChanges,我会得到未定义的输出。但是如果用非元音如“b”调用它会输出“c”,这是正确的。
现在,如果我在返回 realanswer 之前放置返回结果,它将适用于元音,但不适用于其他字母。感谢您的帮助
【问题讨论】:
-
您的代码有一些问题,但您可能希望从这两个问题开始: 1. 您需要为嵌套的 for 循环使用不同的变量(不要使用
ifor两个for循环)2.有后续的return语句没有意义,因为只有第一个return语句会执行 -
代码设计有缺陷。您需要在代码中有两个步骤,而不是作为第一步检查输入字符串中的元音。还要考虑如何处理输入字符串中的大写字母。
标签: javascript