swift阅读整数题

swift reading integer quesiton

我是 swift 编程新手。我在 windows 或在线编译器中编译我的程序。我坚持读取 swift 中的一个整数。我成功地从控制台读取整数。但是我不能在 while 循环中使用这个整型变量。如何在从控制台读取的 while 循环中使用整数变量? 我的尝试是:

import Foundation

print("Enter a number:")


let inputNumber = Int(readLine()!)
if let inputNumber = inputNumber {
    print(inputNumber)
}


if inputNumber == 3 {
    print("number = 3") }
    else { print("number != 3") }

var sayi = inputNumber  
if sayi == 3 {
    print("sayi = 3") }
    else { print("sayi != 3") }
    
while sayi > 0 {
        print("*", terminator:"")
        sayi = sayi - 1 }

编译错误是:

main.swift:21:12: 错误:二元运算符“>”不能应用于 'Int?' 和 'Int'

类型的操作数

while sayi > 0 { ~~~~ ^ ~

main.swift:21:12:注意:“>”的重载存在于这些部分匹配的参数列表中:(Self, Self), (Self, Other)

while sayi > 0 { ^

main.swift:23:16: 错误:可选类型 'Int?' 的值未展开;你是不是想用'!'要么 '?'? sayi = sayi - 1

问题是 inputNumber 和 sayi 是可选值,编译器认为 IntInt? 是不同的类型,无法比较

我会使用以下逻辑来读取和转换用户输入

let inputNumber: Int
//The below if clause will be successful only if both deadline() and Int() returns non-nil values
if let input = readLine(), let value = Int(input) { 
    inputNumber = value
} else {
    print("Bad input")
    inputNumber = 0
}

然后剩下的代码就可以工作了(这里我做了一些简化)

var sayi = inputNumber

sayi == 3 ? print("sayi = 3") : print("sayi != 3")

while sayi > 0 {
    print("*", terminator:"")
    sayi -= 1
}