加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何将readLine()的Swift 3输出转换为Integer?

发布时间:2020-12-14 04:37:37 所属栏目:百科 来源:网络整理
导读:在你阅读整篇文章之前,请不要标记为重复.这是 Swift 3特有的. 我有函数有Ints,Floats等参数.我想取readLine()的输出并让Swift接受readLine()的输出作为这些类型,但不幸的是readLine()输出一个String?当我尝试转换时它告诉我它没有被打开.我需要帮助.我正在
在你阅读整篇文章之前,请不要标记为重复.这是 Swift 3特有的.

我有函数有Ints,Floats等参数.我想取readLine()的输出并让Swift接受readLine()的输出作为这些类型,但不幸的是readLine()输出一个String?当我尝试转换时它告诉我它没有被打开.我需要帮助.我正在使用Ubuntu 16.04.

例如,如果我有区域(宽度:15,高度:15),我如何用包含readLine()的两个常量或者readLine()的任何等价来替换15和15来接受来自终端用户的输入?

另请注意,我写的程序是专门做数学的,因为大多数人似乎对字符串感到满意,这实际上是一个基于CLI的计算器.

编辑1(lol)好的,这里有一个更准确的解释.以下代码将打印梯形区域:

import Foundation

func areaTrapezoid(height: Float,baSEOne: Float,baseTwo: Float) {
    let inside = baSEOne + baseTwo
    let outside = 0.5 * height
      let result = outside * inside
        print("Area of Trapezoid is (result)")
  }

areaTrapezoid(height: 10,baSEOne: 2,baseTwo: 3)

因此,梯形的高度为10个单位,两个基部的长度分别为2和3.但是,我想做的事情如下:

import Foundation

func areaTrapezoid(height: Float,baseTwo: Float) {
    let inside = baSEOne + baseTwo
    let outside = 0.5 * height
      let result = outside * inside
        print("Area of Trapezoid is (result)")
  }

let h = readLine()
areaTrapezoid(height: h,baseTwo: 3)

除了,很明显,readLine()将输出一个可选字符串,而不是Float.我希望用户能够以交互方式通过CLI输入数字,如果愿意的话.我只是学习Swift,但是当我学习那门语言时,我在C语言中做了类似的事情.感谢您的任何帮助,您可以提供.

解决方法

readLine()返回一个Optional String.

要解包String,可以使用if,并将String转换为整数,使用Int().

例:

import Foundation
if let typed = readLine() {
  if let num = Int(typed) {
      print(num)
  }
}

假设您提示用户两次:

let prompt1 = readLine()
let prompt2 = readLine()

然后:

if let response1 = prompt1,response2 = prompt2,num1 = Int(response1),num2 = Int(response2) {
    print("The sum of (num1) and (num2) is (num1 + num2)")
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读