简体   繁体   English

在Swift中将输入数据转换为Integer

[英]Convert input data to Integer in Swift

First, input data using keyboard: 首先,使用键盘输入数据:

    var fh = NSFileHandle.fileHandleWithStandardInput()

    println("Please input first number")
    let num1 = fh.availableData
    println("Please input second number")
    let num2 = fh.availableData

After accept the keyboard input, I want to calculate 接受键盘输入后,我想计算

    num1+num2

and print out. 并打印出来。 But I don't know how to convert num1, num2 to Integer. 但我不知道如何将num1,num2转换为Integer。

It depends which swift you are using, you can see how to do it for 1.x and 2.0: Get integer value from string in swift 这取决于你使用哪种swift,你可以看到如何为1.x和2.0做: 在swift中从字符串中获取整数值
In 2.0 you can initialize an int with a string: 在2.0中,您可以使用字符串初始化int:

var stringNumber = "1234"
var numberFromString = Int(stringNumber)

打印出来就像print("My result: \\(num1 + num2)")一样print("My result: \\(num1 + num2)")

The type that NSFileHandle gives you for num1 and num2 is NSData. NSFileHandle为num1num2提供的类型是NSData。

You can't do math on NSData, you have to first convert the data to numbers. 您无法在NSData上进行数学运算,您必须先将数据转换为数字。

To transform this data into integers, we're doing two steps: first convert the data to an NSString, then convert the string to an Integer. 要将这些数据转换为整数,我们要做两个步骤:首先将数据转换为NSString,然后将字符串转换为Integer。 After that, we can sum the two values. 之后,我们可以将这两个值相加。

We're using the integerValue method of NSString : 我们正在使用NSStringintegerValue方法:

let fh = NSFileHandle.fileHandleWithStandardInput()
print("Please input first number")
let num1 = fh.availableData
print("Please input second number")
let num2 = fh.availableData
if let  numString1 = NSString(data: num1, encoding: NSUTF8StringEncoding),
        numString2 = NSString(data: num2, encoding: NSUTF8StringEncoding) {
    let val1 = numString1.integerValue
    let val2 = numString2.integerValue
    print("\(val1) + \(val2) = \(val1 + val2)")
}

Result: 结果:

Please input first number 请输入第一个号码
33 33
Please input second number 请输入第二个号码
42 42
33 + 42 = 75 33 + 42 = 75

This is what i did in latest version of Swift: 这是我在最新版Swift中所做的:

` `

class Input2 {
    func inputString() -> String {
        let keyboard = FileHandle.standardInput
        let inputData = keyboard.availableData
        return String(data: inputData, encoding: .utf8)!
    }

    func inputInt() -> Int {
        let keyboard = FileHandle.standardInput
        let inputData = keyboard.availableData
        let str = String(data: inputData, encoding: .utf8)!
        let i = Int(str.replacingOccurrences(of: "\n", with: ""))!
        return i
    }
}

var inp = Input2()
print("Please enter your name")
var name:String = inp.inputString()
print("line: \(name)")
//var i = Int(name.replacingOccurrences(of: "\n", with: ""))!
print("Enter a number:")
var i = inp.inputInt()
print(i)

` `

You can print or store the sum by : 您可以通过以下方式打印或存储总和:

var fh = NSFileHandle.fileHandleWithStandardInput()
print("Please input first number")
let data1 = fh.availableData
let stringvalue1 = NSString(data: data1, encoding:NSUTF8StringEncoding) as!    String // getting as string value
let num1 = Int(stringvalue1.stringByReplacingOccurrencesOfString("\n",    withString: ""))! // converting string to Int
print("Please input second number")
let data2 = fh.availableData
let stringvalue2 = NSString(data: data2, encoding:NSUTF8StringEncoding) as! String
let num2 = Int(stringvalue2.stringByReplacingOccurrencesOfString("\n", withString: ""))!
let sum = num1 + num2
print("sum is \(sum)")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM