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

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

概述在你阅读整篇文章之前,请不要标记为重复.这是 Swift 3特有的. 我有函数有Ints,Floats等参数.我想取readLine()的输出并让Swift接受readLine()的输出作为这些类型,但不幸的是readLine()输出一个String?当我尝试转换时它告诉我它没有被打开.我需要帮助.我正在使用Ubuntu 16.04. 例如,如果我有区域(宽度:15,高度:15),我如何用包含re 在你阅读整篇文章之前,请不要标记为重复.这是 Swift 3特有的.

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

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

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

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

import Foundationfunc 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 Foundationfunc 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 Foundationif 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)")}
总结

以上是内存溢出为你收集整理的如何将readLine()的Swift 3输出转换为Integer?全部内容,希望文章能够帮你解决如何将readLine()的Swift 3输出转换为Integer?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1005168.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存