2017-08-16 68 views
1

我是一個相當新的程序員,我剛開始使用Xcode。 Atm我試圖做一個計算器,可以從3個輸入值(高度,長度爲&寬度)計算總音量,但我似乎無法使其計算出來。現在我可以輸入一個值並點擊按鈕,然後崩潰。 在此先感謝! 這裏是我的代碼:有3個輸入值計算音量時出現問題。

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
} 

override var representedObject: Any? { 
    didSet { 
    // Update the view, if already loaded. 
    } 
} 
@IBOutlet weak var HeightInput: NSTextField! 


@IBOutlet weak var LengthInput: NSTextField! 

@IBOutlet weak var WidthInput: NSTextField! 

@IBOutlet weak var Result: NSTextField! 


@IBAction func Calculate(_ sender: Any) { 
    var height = Int(HeightInput.stringValue) 

    var width = Int(WidthInput.stringValue) 

    var length = Int(LengthInput.stringValue) 

    if height == 0 
    { 
     Result.stringValue = "Error" 
    } 
    else{ 
     var result = width! * height! * length! 
      Result.stringValue = "the volume is: \(result)" 
    } 
} 
+1

它在哪裏崩潰?你是否證實'NSTextField'不是'nil'?你是否驗證過「高度/寬度/長度」不是「無」? - 學習**調試!** –

回答

0

嘗試類似這樣的東西。

@IBAction func Calculate(_ sender: Any) { 

    let height = Int(HeightInput.stringValue) ?? 0 
    let width = Int(WidthInput.stringValue) ?? 0 
    let length = Int(LengthInput.stringValue) ?? 0 

    let result = height * width * length 

    if result == 0 { 
     Result.stringValue = "Error" 
    else { 
     Result.stringValue = "The volume is: \(result)" 
    } 
} 

將標籤值轉換爲整數時,它將返回一個可選項(意味着它可以爲零)。在計算結果時,您需要用!強制展開這些選項。

我建議有條件地解開這些值。使用??意味着如果該值爲零,它將默認爲您在??之後放置的任何值。

+0

你仍然強制展開變量。 –

+0

好點@MartinR。我沒有正確地測試我的解決方案。我現在改變了它。 –

+0

當我按下按鈕來計算值時,仍然會出現同樣的問題。我可以在我的控制檯中看到它正確地增加了這些值,但它似乎有問題將值輸出到標籤。有任何想法嗎? 感謝迄今。我已經學到了很多 – Rasmus