2016-10-09 14 views
1

私のコードを3回チェックしてエラーを見つけることができませんでしたが、出力に間違った答えが表示されています。このコードは簡単な追加ゲームテスターです。次のSWIFTプログラムの出力でエラーが発生しました

import UIKit 

class ViewController: UIViewController { 

    var score = 0 
    var firstNumber: Int? 
    var secondNumber: Int? 
    var answer: Int? 
    var input: Int? 
    var count = 0 
    @IBOutlet weak var lblTitleLabelOUTLET: UILabel! 
    @IBOutlet weak var lblEquationOUTLET: UILabel! 
    @IBOutlet weak var txtAnswerFieldOUTLET: UITextField! 
    @IBOutlet weak var btnCheckAnswerOUTLET: UIButton! 
    @IBOutlet weak var lblScoreDisplayerOUTLET: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    displayQuestion() 


} 

    @IBAction func pressedCheckedAnswerButtonACTION(sender: UIButton) { 
     if (input == answer){ 
      score = score + 1 
      lblScoreDisplayerOUTLET.text = "Your score is \(score) out of \(count) " 
      } 
     else{ 
      lblScoreDisplayerOUTLET.text = "Incorrect ans " 
     } 
    displayQuestion() 
    } 

    func displayQuestion() { 

     firstNumber = Int(arc4random_uniform(10)) 
     secondNumber = Int(arc4random_uniform(10)) 
     lblEquationOUTLET.text = String(firstNumber!) + " + " + String(secondNumber!) + " = " 
     answer = firstNumber! + secondNumber! 
     input = Int(txtAnswerFieldOUTLET.text!) 
     lblTitleLabelOUTLET.text = String(input) 

     count = count + 1 
     } 

} 

答えて

2

質問を作成して表示すると、inputが計算されます。そのコードをpressedCheckedAnswerButtonACTIONの先頭に移動する必要があります。元のコードから

@IBAction func pressedCheckedAnswerButtonACTION(sender: UIButton) { 
    input = Int(txtAnswerFieldOUTLET.text!) 

    if input == answer { 
     score = score + 1 
     lblScoreDisplayerOUTLET.text = "Your score is \(score) out of \(count) " 
    } 
    else { 
     lblScoreDisplayerOUTLET.text = "Incorrect ans " 
    } 
    displayQuestion() 
} 
+0

で表示しようとしています。しかし、それがどう働いているかを明示的に説明することができますか助けてくれてありがとう –

+0

すべてがタイミングと関係しています。あなたがそれをコード化したやり方では、質問が表示されたときに変数 'input'が計算されました。これは早すぎます。ユーザーが答えを入力してボタンを押すまで待つ必要があります。私の変更で、ユーザーが答えを入力してボタンを押した後に、「入力」が割り当てられます。 – vacawama

0

、あなただけviewDidAppear代わりのviewDidLoaddisplayQuestion()を置く場合は動作します。 viewDidLoadではラベルが画面に作成されていないため、input = Int(txtAnswerFieldOUTLET.text!)の値を

関連する問題