Swift NSString到Int的转换问题



首先,我对编程和学习Swift还很陌生,尽管我过去曾使用过python和perl。

我正在创建一个简单的素数命令行应用程序。当我为函数提供参数时,程序会正确运行,但当我提示用户输入时,会导致始终不正确的输出。我研究了在Swift中实现这种行为的最佳方式,因为它没有scanf()raw_input()类型的命令,但我有一些问题。

这个程序有几个不同的函数,但我一直在讨论的一个函数检查整数是否为素数。该功能的代码如下:

func testForPrime(num:Int)->Bool{
    var num = num
    var counter = 0
    var primeTest : Bool = true
    if num <= 1 || num % 2 == 0{
        println("(num) is not a prime number")
        primeTest = false
    }else{
    ##'checkerNumbers' is another function to determine the denominator 
        for i in checkerNumbers(Double(num)){ 
            if num % i == 0 {
                ++counter
                println("(num) is not a prime number.")
                println("(num / i)*(i)=(num)")
                primeTest = false
                break
            }
        }
        if counter == 0{
            println("(num) is a prime number!")
            primeTest = true
        }
    }
    return primeTest
}

这是函数的输入

var input = NSFileHandle.fileHandleWithStandardInput()
println("Enter a number to check if it is prime")
if let data : NSData = input.availableData as NSData? { 
    if let var x : Int = NSInteger(NSUTF8StringEncoding) as NSInteger?{
        var intInput = x
        testForPrime(intInput)        
    }
}

当在端子中输入任意数字时,输出始终为'4'。但是,如果我用testForPrime(13)运行函数,而不是用用户输入,它会像我预期的那样响应。我想这可能与从NSString和NSUTF8StringEncodingInt的转换有关。。。

有人能帮我解决这个问题吗?

提前感谢!

好的。。。所以我想了一种方法让它发挥作用,尽管它可能不是最好的。我用以下内容替换了整个输入部分:

println("Enter a number to check if it is prime")
var input = NSString(data: NSFileHandle.fileHandleWithStandardInput().availableData, encoding:NSUTF8StringEncoding)
var intInput = input?.intValue
testForPrime(Int(intInput!))

最新更新