在Javascript中添加案例添加

时间:2016-02-04 22:27:22

标签: javascript switch-statement

我想使用这个开关案例,但它不起作用:

switch(parseInt(num1),parseInt(num2),op)
    {
    case '+': resultat=(num1+num2);break;
    case '-': resultat=(num1-num2);break;
    case '*': resultat=(num1*num2);break;
    case '/': resultat=(num1/num2);break;
    case '<': resultat=(num1<num2);break;
    case '>': resultat=(num1>num2);break;
    case '%': resultat=(num1%num2);break;
    default:alert("Erreur: opérateur inconnu");
    }
使用prompt命令收集

num1和num2,它们是数字。它们使用parseInt()从链转换为数字。 op是一个运算符,如:*,/,+, - ,%或&gt;,&lt;。它也是通过快速命令收集的。 我只想做一个补充,比如3 + 5 = 8。 所有的东西都适用于添加...它返回答案35.我不明白为什么它没有看到添加即使我把它放在()之间...你可以看到:case'+':resultat =(NUM1 + NUM2);打破;

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

因为你的num1num2是字符串 - 它们的总和是连接字符串。此外,parseInt 返回已解析的值,不会更改变量值。这样做:

switch(op)
    {
    case '+': resultat=(parseInt(num1)+parseInt(num2));break;
    case '-': resultat=(parseInt(num1)-parseInt(num2));break;
    case '*': resultat=(parseInt(num1)*parseInt(num2));break;
    case '/': resultat=(parseInt(num1)/parseInt(num2));break;
    case '<': resultat=(parseInt(num1)<parseInt(num2));break;
    case '>': resultat=(parseInt(num1)>parseInt(num2));break;
    case '%': resultat=(parseInt(num1)%parseInt(num2));break;
    default:alert("Erreur: opérateur inconnu");
    }

答案 1 :(得分:1)

您只是打开括号op中的最后一项。 parseInts没有做任何事情。因此,您的+块仍然将它们视为字符串并连接。

num1 = parseInt(num1);
num2 = parseInt(num2);
switch(op)
    {
    case '+': resultat=(num1+num2);break;
    case '-': resultat=(num1-num2);break;
    case '*': resultat=(num1*num2);break;
    case '/': resultat=(num1/num2);break;
    case '<': resultat=(num1<num2);break;
    case '>': resultat=(num1>num2);break;
    case '%': resultat=(num1%num2);break;
    default:alert("Erreur: opérateur inconnu");
    }