我在这里看了很多与我有关的问题,但他们都使用不同的方法来处理我必须使用的方法。我知道这是一个非常漫长的方式来找出有更简单的方法,但我只是按照说明。
为什么以下代码不起作用?该函数检查它是否是元音。 然后检查输入以查看它的长度是否为1.如果为1,则调用该函数。如果它大于1,则在长度为1之前请求另一个输入。
我现在看到JS中不存在布尔值。我想这个问题现在无效了!
function isVowel(x){
boolean result;
if(x == "A" || x == "E" || x == "I" || x == "O" || x == "U" ) {
result = true;
}
else{
result = false;
}
return result;
}
var input;
input = prompt("Enter a character ");
input = input.toUpperCase();
if(input.length == 1){
isVowel(input);
}
}
else{
while(input.length != 1){
prompt("Enter a character ");
if(input.length == 1){
isVowel(input);
}
}
}
alert(isVowel(input));
答案 0 :(得分:6)
你在三个地方调用isVowel
,只丢掉前两个中的返回值。如果您想在前两个地方看到返回值,请按照上一个示例中的alert
或其他几种方式显示它。
还有其他问题:
作为devqon points out,您使用了boolean
而不是var
,因此代码无法解析
任何时候你发现自己写作:
var result;
if (condition) {
result = true;
} else {
result = false;
}
return result;
...停下来做成:
var result = condition;
return result;
所以isVowel
:
function isVowel(x) {
var result;
result = x == "A" || x == "E" || x == "I" || x == "O" || x == "U";
return result;
}
(当然,您可以将其设为单行,但以这种方式调试会更容易。)
您的}
阻止之后还有一个额外的if
(合理,一致的格式化会使这一点变得明显)
您的while
循环永远不会结束,因为您永远不会使用input
prompt
使用if
while
后跟do-while
。
以下是仅包含这些更改的更新版本
function isVowel(x) {
var result;
result = x == "A" || x == "E" || x == "I" || x == "O" || x == "U";
return result;
}
var input;
do {
input = prompt("Enter a character ");
if (input.length == 1) {
alert(isVowel(input));
}
} while (input.length != 1);
答案 1 :(得分:3)
尝试此功能,无论大写或小写
function isVowel(x) { return /[aeiouAEIOU]/.test(x); }
var input = '';
while (input.length != 1) {
input = prompt("Enter a character ");
}
alert(isVowel(input));
答案 2 :(得分:2)
我想要一个数学解决方案,所以我提出了这个:
function isVowel(c) {
c = c.charCodeAt(c);
var magicNumber = 2198524575;
c = (c > 96) ? (c-32) : c;
if( c < 65 || c == 75 || c > 90)
return false;
var div = magicNumber / c;
var diff = div - Math.floor(div);
if( diff == 0 )
return true;
return false;
}
您将字符作为字符串发送给它。它将检测以下任何一个:AEIOUaeiou
幻数只是AEIOU的ascii代码相乘。检查c == 75是因为K是唯一也得到完美除法的字符,只要我们将检查约束为大写字母。
注意:如果您可以删除c = c.charCodeAt(c);
,代码运行速度会更快。它几乎与其他方法一样快,并且可能仍然可以改进此代码。
答案 3 :(得分:2)
答案只能是一行,简短而甜美。见下文。
function isVowel(x) {
return ("aeiouAEIOU".indexOf(x) != -1);
}
答案 4 :(得分:1)
(function(){
var vowel_string = "aieouAIEOU";
input = prompt("Enter a single character...");
if (input.length == 1){
if (vowel_string.contains(input)){
alert(input + " is a vowel");
}
}
else{
alert("Enter a single character");
}
})();
答案 5 :(得分:1)
这是一个简短的ES6帮助程序,用于测试元音
const isLetterAVowel = (str) => {
return ['a', 'e', 'i', 'o', 'u'].includes(str.charAt(0).toLowerCase());
}
辅音返回false
:
console.log(isLetterAVowel('cat'));
元音返回true
:
console.log(isLetterAVowel('emu'));
答案 6 :(得分:0)
以简单的方式检查给定字符串是否包含元音
var input = "kad aeiou";
function vowvelOrNot(input){
var str = input.toLowerCase();
if(str.length > 0){
for(i=0; i <= str.length; i++){
switch (str[i]){
case 'a':
var flag_a = true;
break;
case 'e':
var flag_e = true;
break;
case 'i':
var flag_i = true;
break;
case 'o':
var flag_o = true;
break;
case 'u':
var flag_u = true;
break;
}
if(flag_a && flag_e && flag_i && flag_o && flag_u){
return "Given string is Vowel";
}
}
return "Given string is Not Vowel";
}else{
return "please enter the correct value";
}
}
var res = vowvelOrNot(input);
console.log(res);
答案 7 :(得分:0)
函数is_vowel(char){ 让listofVowel = ['a','i','e','o','u','A','I','E','O','U'];
返回Vowel.includes(char)的列表; }
console.log(is_vowel('a'));