如果if语句被调用并且所有条件都为真,那么所有的else if语句也会被调用吗?

15 浏览
0 Comments

如果if语句被调用并且所有条件都为真,那么所有的else if语句也会被调用吗?

如果一个if语句被调用并且所有条件都为真,那么所有的else if语句也会被调用吗?

例如:

如果coins大于19并且speedLvl等于1 {

speedLvl等于2

coins减去20

}

否则,如果coins大于49并且speedLvl等于2 {

speedLvl等于3

coins减去50

}

否则,如果coins大于99并且speedLvl等于3 {

speedLvl等于4

coins减去100

}

如果玩家有1000个coins,则speedLvl是否变为4?

0
0 Comments

不,如果一个if语句被调用且所有条件都为真,那么所有的else if语句也不会被调用。

所以,如果条件if coins > 19 && speedLvl == 1为真,那么剩下的else if条件甚至不会被检查。

如果第一个if语句不为真,那么程序会继续执行每个if else语句,直到找到为真的条件。一旦找到一个为真的if else条件,程序将不再检查剩余的if else条件。

如果希望检查每个条件,可以去掉else并将每个条件作为独立的if语句,这样每个条件都可以单独检查,而不依赖于其他条件。

0
0 Comments

在这段代码中,如果第一个if语句的条件为真,那么它将执行其中的代码块,并且不会执行else if语句。同样地,如果第一个else if语句的条件为真,那么它将执行其中的代码块,并且不会执行后续的else if语句。这是因为if语句和else if语句是互斥的,只有一个条件为真时,对应的代码块才会被执行。

要解决这个问题,可以使用switch语句来替代多个嵌套的if语句。在Swift 4中,可以使用元组匹配和半开区间操作符来编写更简洁的代码。另一种解决方法是使用数组来存储每个等级升级所需的费用,并使用循环来进行多次升级。

以下是使用switch语句的示例代码:

switch (speedLvl, coins) {

case (1, 20..<50):

speedLvl += 1

coins -= 20

case (2, 50..<100):

speedLvl += 1

coins -= 50

case (3, 100...):

speedLvl += 1

coins -= 100

default: break;

}

另一个解决方法是使用数组和循环来实现多次升级的功能:

let levelUpCosts = [0, 20, 50, 100]

var affordedLevelUpsCost = 0

let affordedLevelUps = levelUpCosts.lazy.prefix(while: { cost in

let newCost = affordedLevelUpsCost + cost

let canAffordLevelUp = newCost < coins

if canAffordLevelUp { affordedLevelUpsCost = newCost }

return canAffordLevelUp

})

speedLvl += affordedLevelUps.count

coins -= affordedLevelUpsCost

在这种方法中,levelUpCosts数组存储了每个等级升级所需的费用。通过循环和条件判断,可以计算出可以进行的多次升级次数,并且相应地更新速度等级和剩余的硬币数量。

总之,要解决if语句中所有条件为真时是否会调用所有else if语句的问题,可以使用switch语句或数组和循环来实现多次升级的功能。这些方法可以提供更简洁和可读性更好的代码。

0