2016-10-09 9 views
1

Я проверил свой код трижды и не смог найти в нем никакой ошибки, но мой результат показывает мне неправильный ответ. Код имеет простой добавочный тестер игры.Ошибка в выходе следующей программы 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

Из исходного кода, если вы только положить displayQuestion() на viewDidAppear вместо viewDidLoad будет работать. Это потому, что в viewDidLoad у вас нет ярлыка, созданного на экране, поэтому вы пытаетесь получить доступ к его значению с input = Int(txtAnswerFieldOUTLET.text!) в viewDidLoad