if else else if语句(JS)

时间:2017-02-14 05:50:45

标签: javascript if-statement math

我的程序有问题。首先,我会告诉你它的意图: 它应该为你做毕达哥拉斯定理。 Theorem Explanation Here.

这是数学公式:(a * a)+(b * b)=(c * c)

以下是该计划:

function pythagorean (a, b, c) {
if (c === null){
    return 'c = ' + Math.sqrt( (a*a) + (b*b) );
} else if (b === null) {
    return 'b = ' + Math.sqrt( (c*c) - (a*a) );
} else if (a === null) {
    return 'a = ' + Math.sqrt( (c*c) - (b*b) );
} else {
    return "I'm sorry, I don't understand."
};
};

我决定想要这样做,并试图这样做,如果双方:A和B都为空,程序将假设=== b,公式将成为: [无论C是什么] c = Math.sqrt(2 *((a * a)+(b * b)))

(抱歉它令人困惑)

所以我尝试实现一些代码来使其工作:

function pythagorean (a, b, c) {
if (c === null){
    return 'c = ' + Math.sqrt( (a*a) + (b*b) );
 } else if (a && b === null){
    return 'if a and b are equal, then a and b both equal ' + Math.sqrt((c * c) / 2);
 } else if (b === null) {
    return 'b = ' + Math.sqrt( (c*c) - (a*a) );
 } else if (a === null) {
    return 'a = ' + Math.sqrt( (c*c) - (b*b) );
 } else {
    return "I'm sorry, I don't understand."
 };
};

但每当我给C一个值,但是两者都是& b === null,奇怪的是它只是跳过if if语句并转到b === null else if语句并给我:' b ='和一些随机的答案。我需要你的家伙' /女孩'帮助!

3 个答案:

答案 0 :(得分:0)

条件运算符应该是这样的

a === null&& b === null

因为它会检查a是否为空,b也为空。

a&& b === null

以上条件将检查a是否具有某个值(例如1)不应为“0”且null,NaN,''和“”和b为空。

   function pythagorean (a, b, c) {
if (c === null){
return 'c = ' + Math.sqrt( (a*a) + (b*b) );
 } else if (a === null && b === null){
return 'if a and b are equal, then a and b both equal ' + Math.sqrt((c * c) / 2);
 } else if (b === null) {
return 'b = ' + Math.sqrt( (c*c) - (a*a) );
 } else if (a === null) {
return 'a = ' + Math.sqrt( (c*c) - (b*b) );
 } else {
return "I'm sorry, I don't understand."
 };
};

var abc = pythagorean(null,null,2);
alert(abc);

答案 1 :(得分:0)

if (a && b === null)不是检查它们是否null的正确方法,其效果是检查a是否真实和{ {1}} b,有效:

null

你应该使用类似的东西:

if ((a) && (b === null))

这是你当前问题的解决方案但是,如果你正在寻找一个处理所有错误案例的解决方案(例如当斜边也为空时其中一个边是if ((a === null) && (b === null)) ),你可能会更好关闭你的支票一点点。您可能认为这会使代码复杂化,但您也可以通过了解先前检查无法实现的情况来大大简化事情。

由于我并不是null范例的忠实粉丝(if (something) return else在这种情况下总是多余的),我已经将它们删除了。我也倾向于选择稍微有意义的变量名称。

以下代码包含所有这些更改,并添加了解释每个部分的注释:

else

答案 2 :(得分:0)

这个看起来是正确的

 else if (a==0&b==0)