2016-02-04 27 views
-1

我想用这个开关的情况下,但它不工作:开关箱除了在Javascript

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。 一切工作免除增加...它返回的答案35.我不明白为什么它看不到添加,即使我把它之间()...正如你可以看到:case'+': resultat =(NUM1 + NUM2);打破;

有人可以帮助我吗?

回答

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