一个简单的快速程序致命错误

时间:2017-05-08 22:51:37

标签: swift error-handling

import UIKit
import Foundation

func randomnumber (low:Int,high:Int )->Int
{
let range = high - (low-1)

return (Int (arc4random()) % range ) + ( low - 1)
}

let answer =  randomnumber(low: 0, high: 100)
var turn  =  1




while (true)
{
print  ("Guess #\(turn): enter a number between 0 and 100")

let userinput  = readLine();
if let guess:Int = Int(userinput!)
{
 if( guess<answer )
  {
   print("choose a higher number")


  }
  if ( guess>answer )
   {
  print ("choose a smaller number")

    }
  if( guess==answer)
  {
   print("wohoo you won")
   break;
  }
  }
  }

这段代码是关于一个使用swift的简单游戏,有一个随机数,然后输入一个输入,如果这个输入大于随机数,我们必须选择较小的数字,如果我们选择较小的数字则相反仍然不等于随机数,如果它等于你获胜的随机数。 出现此错误: 致命错误:在解包可选值时意外发现nil

2 个答案:

答案 0 :(得分:1)

正如Tristan Beaton所指出的那样,readLine()在游乐场不起作用,因此你的userInput总是为零。

  1. 创建命令行工具应用程序
  2. enter image description here

    1. 当你保存时选择SWIFT
    2. 复制粘贴代码
    3. 跑步和玩耍 enter image description here
    4. 强行打开时也要非常小心。这总是一个等待发生的崩溃;)你可以阅读这个tutorial

答案 1 :(得分:0)

我在命令行工具中对此进行了测试,但它确实有效。另外,不要强制打开选项,因为你可以检查他们是否有数据而不会崩溃应用程序。

我在你的其他if语句中添加了continue语句。尽管在这种情况下并不是真的需要,但最好还是使用它以便继续执行后的任何代码都不会被执行。它只是节省了一点计算能力。

import Foundation

func randomnumber(low: Int, high: Int) - >Int {

    let range = high - (low-1)

    return (Int(arc4random()) % range) + (low - 1)
}

let answer =  randomnumber(low: 0, high: 100)

var turn  =  1

while (true) {

    print("Guess #\(turn): enter a number between 0 and 100")

    if let userinput = readLine() {

        if let guess:Int = Int(userinput) {

            // Putting this here will only increase the guess count if their input in a number.
            turn += 1

            if guess < answer {

                print("choose a higher number")

                continue
            }

            if guess > answer {

                print ("choose a smaller number")

                continue
            }

            if guess == answer {

                print("wohoo you won")

                break
            }
        }
    }
}

这是控制台输出

This is the console output