【问题标题】:Convert input data to Integer in Swift在 Swift 中将输入数据转换为整数
【发布时间】:2016-04-22 06:30:52
【问题描述】:

首先,使用键盘输入数据:

    var fh = NSFileHandle.fileHandleWithStandardInput()

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

接受键盘输入后,我要计算

    num1+num2

并打印出来。但是我不知道如何将num1,num2转换为Integer。

【问题讨论】:

  • println ?你还在用 Xcode 6 吗?

标签: swift


【解决方案1】:

这取决于您使用的是哪个 swift,您可以查看 1.x 和 2.0 的操作方法: Get integer value from string in swift
在 2.0 中,您可以使用字符串初始化 int:

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

【讨论】:

    【解决方案2】:

    要打印出来,像 print("My result: \(num1 + num2)") 那样做

    【讨论】:

      【解决方案3】:

      NSFileHandle 为 num1num2 提供的类型是 NSData。

      您不能对 NSData 进行数学运算,您必须先将数据转换为数字。

      要将这些数据转换为整数,我们需要执行两个步骤:首先将数据转换为 NSString,然后将字符串转换为 Integer。之后,我们可以将这两个值相加。

      我们正在使用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)")
      }
      

      结果:

      请输入第一个数字
      33
      请输入第二个数字
      42
      33 + 42 = 75

      【讨论】:

      • 我试图整理你的代码,但我得到了一个错误,你能告诉我原因吗? let numString1 = NSString(data: num1, encoding: NSUTF8StringEncoding) let numString2 = NSString(data: num2, encoding: NSUTF8StringEncoding) if(numString1 != nil)&&(numString2 != nil){ let val1 = numString1.integerValue let val2 = numString2.integerValue print("(val1) + (val2) = (val1 + val2)") }
      • 我的例子有效。您的修改使它不再起作用。观察差异,你就会知道原因。
      【解决方案4】:

      这是我在最新版本的 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)
      

      `

      【讨论】:

        【解决方案5】:

        您可以通过以下方式打印或存储总和:

        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)")
        

        【讨论】:

        • @MartinR 抱歉。我只是认为它可能会起作用。我之前没有编译。现在我用工作代码编译并更改了我的答案。谢谢你。
        猜你喜欢
        • 1970-01-01
        • 2018-01-12
        • 2012-06-19
        • 1970-01-01
        • 2014-12-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多