Swift NSString 到 Int 的转换问题
Swift NSString to Int conversion issues
首先,尽管我过去曾使用过 python 和 perl,但我对编程和尝试学习 Swift 还很陌生。
我正在创建一个简单的素数命令行应用程序。当我为函数提供参数时,程序 运行 正确运行,但当我提示用户输入时,会导致输出始终不正确。我研究了在 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)
}
}
当在终端中输入 any 数字时,输出始终为“4”。但是,如果我 运行 使用 testForPrime(13)
而不是用户输入的函数,它会按照我的预期进行响应。我在想这可能与从 NSString 和 NSUTF8StringEncoding
到 Int
...
的转换有关
有人可以帮我解决这个问题吗?
提前致谢!
好的...所以我想出了一个方法让它工作,虽然它可能不是最好的。我用以下内容替换了整个输入部分:
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!))
首先,尽管我过去曾使用过 python 和 perl,但我对编程和尝试学习 Swift 还很陌生。
我正在创建一个简单的素数命令行应用程序。当我为函数提供参数时,程序 运行 正确运行,但当我提示用户输入时,会导致输出始终不正确。我研究了在 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)
}
}
当在终端中输入 any 数字时,输出始终为“4”。但是,如果我 运行 使用 testForPrime(13)
而不是用户输入的函数,它会按照我的预期进行响应。我在想这可能与从 NSString 和 NSUTF8StringEncoding
到 Int
...
有人可以帮我解决这个问题吗?
提前致谢!
好的...所以我想出了一个方法让它工作,虽然它可能不是最好的。我用以下内容替换了整个输入部分:
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!))