我在这里查看了很多与我有关的问题,但是它们都使用与我必须使用的方法不同的方法。我知道找出简单的方法是一个漫长的尝试,但我只是按照说明进行操作。

为什么下面的代码不起作用?该功能检查是否为元音。
然后检查输入的长度是否为1。如果为1,则调用该函数。如果大于1,则请求另一个输入,直到长度为1。

我现在看到boolean在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));

最佳答案

您要在三个地方调用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);

    关于javascript - Javascript检查字符是否是元音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26926994/

    10-12 14:02
    查看更多