2016-07-03 58 views
3

請不要標記爲重複,直到你讀完整件事情。這是特定於斯威夫特3.如何將readLine()的Swift 3輸出轉換爲Integer?

我有參數,如Ints,浮動等功能。我想採取readLine()的輸出,並讓Swift接受readLine()的輸出作爲這些類型,但不幸的是readLine()輸出一個字符串?當我試圖轉換它告訴我它不是unwrapped。我需要幫助。我使用的是Ubuntu 16.04。

例如,如果我有area(width: 15, height: 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, baseOne: 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, baseOne: 2, baseTwo: 3) 

除此之外,作爲已經是顯而易見的,的readLine()將輸出一個可選的字符串,而不是浮動。我希望用戶能夠以交互方式通過CLI輸入數字,如果您願意的話。我剛剛學習Swift,但是當我學習那種語言時,我在C++中做了類似的事情。感謝您的任何幫助,您可以提供。

回答

2

readLine()返回一個可選字符串。

要打開字符串,您可以使用if let,並將字符串轉換爲整數,請使用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)") 
} 
+0

我不知道我其實可以發表評論!好吧,看看更新。這是否適用於那裏? –

+0

是的,都一樣。你可以在我的例子中使用'Float()'或'Double()'和我使用'Int()'相同的方法來從字符串輸入轉換。 – Moritz

+0

試過,真的,兄弟。謝謝,我不認爲會有一個簡單的方法! –