我想使用这个开关案例,但它不起作用:
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);打破;
有人可以帮助我吗?
答案 0 :(得分:1)
因为你的num1
和num2
是字符串 - 它们的总和是连接字符串。此外,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");
}