对这段代码感到困惑,没有看到任何错误,但没有打印出我期待的东西

时间:2017-10-17 11:06:43

标签: javascript

你好,我需要有人告诉我在这行代码中我做错了什么

 else if((x%3===0) && (x%5===0))
    {
        console.log("JuliaJames");

显示" julia"而不是" JuliaJames"

var x=1;

while(x<=20)
{
    if (x%3===0)
    {
        console.log("Julia");
    }
    else if(x%5===0)
    {
        console.log("James");
    }
    else if((x%3===0) && (x%5===0))
    {
        console.log("JuliaJames");
    }
    else if(!(x%3===0 && x%5===0))
    {
        console.log(x);
    }

    x=x+1;
}

4 个答案:

答案 0 :(得分:0)

只有先前的else if不被执行才会执行x,所以如果if确实可以被3整除,它将会执行第一个if并且它不会继续评估任何其他条件。

一种解决方案是将更严格的{{1}}陈述放在最上面(即从3&amp;&amp; 5开始)

答案 1 :(得分:0)

一旦条件为raiseModal(ev: any){ let input: string = event.target.value; if(ev.keyCode == 13){ // can also be (ev.key == "Enter") if(input.length == 10){ // OPEN MODAL FOR 10 DIGITS } else if (input.length == 12) { // OPEN MODAL FOR 12 DIGITS } else if (input.length == 15) { // OPEN MODAL FOR 15 DIGITS } else { // ERROR: INPUT LENGTH INVALID }; }; } ,其他人就会陷入true结构。

您需要采取其他方法,首先检查最复杂的情​​况,然后检查复杂性较低的情况。

最后一次检查不是必需的,因为它是您需要显示结果的部分,因为没有其他检查是else if

&#13;
&#13;
true
&#13;
var x = 1;
while (x <= 20) {
    if ((x % 3 === 0) && (x % 5 === 0)) {
        console.log("JuliaJames");
    } else if (x % 3 === 0) {
        console.log("Julia");
    } else if (x % 5 === 0) {
        console.log("James");
    } else {
        console.log(x);
    }
    ++x;
}
&#13;
&#13;
&#13;

答案 2 :(得分:0)

尝试手动解析算法并验证您的步骤与程序正在执行的步骤相同。您输出错误的原因是您设置规则的顺序。

答案 3 :(得分:0)

订单错了。 5和3都适用于15,所以把大多数条件放在顶部,如下所示:

var x=1;

while(x<=20)
{
    if ((x%3===0) && (x%5===0))
    {
        console.log("JuliaJames");
    }
    else if(x%5===0)
    {
        console.log("James");
    }
    else if(x%3===0)
    {
        console.log("Julia");
    }
    else if(!(x%3===0 && x%5===0))
    {
        console.log(x);
    }

    x=x+1;
}

请在此处查看:http://jsbin.com/faheforoko/edit?js,console,output