Javascript 中的 Switch case 添加

Switch case addition in Javascript

我想使用这个 switch case,但是它不起作用:

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");
    }

num1和num2是之前用提示命令收集的,都是数字。使用 parseInt() 将它们从链转换为数字。 op 是一个运算符,例如:*、/、+、-、% 或 >、<。它也是使用提示命令收集的。 我只想做一个加法,比如 3+5=8。 除加法外一切正常...它 return 答案 35。我不明白为什么即使我将它放在 () 之间也看不到加法...如您所见:case ' +': 结果=(num1+num2);中断;

有人可以帮我吗?

这是因为您的 num1num2 是字符串 - 它们的总和是串联的字符串。另外,parseIntreturns解析值,不改变变量值。改为这样做:

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");
    }

您只打开了括号中的最后一项,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");
    }