即使语句为真,其他语句也会运行(Swift)

时间:2019-05-21 07:52:23

标签: swift if-statement

我有以下代码来检查数字是否是质数:

var isPrime = true
var number = "Four"
var i = 2
var numInt = Int(number)

if numInt == nil {
    print("Sorry, this is not a valid number")
} else {
    while i < number {
        if number % i == 0  {
            isPrime = false
        }
        i += 1
    }
}

我正在尝试避免崩溃,因此如果数字不是实际的整数,则希望打印一条错误消息。因此,例如,在上面的示例中,如果用户输入数字作为字符串,则应该显示错误。

numInt在这里打印为nil,但是应用程序崩溃,因为即使if语句的该部分为true,它似乎也移至else语句并尝试使用字符串运行它。如何避免第二部分被运行?

1 个答案:

答案 0 :(得分:0)

它不会崩溃,甚至不会编译。以下可能是您想要的:

var isPrime = true

var number = "Four"

var i = 2

if let numInt = Int(number) {
    while i < numInt {
        if numInt % i == 0  {
            isPrime = false
        }
        i += 1
    }
} else {
    print("Sorry, this is not a valid number")
}

这将打印"Sorry, this is not a valid number"。如果设置var number = "123",它将运行循环。