swift - 代码是正确的,但有时我会遇到运行时错误

标签 swift random numbers cycle

我写了一个函数,在这个函数里面有一个开关,在每种情况下都有随机生成的数字的操作 我在for循环中多次调用此函数并将结果复制到数组中,有时在执行过程中会出现EXC_BAD_Instruction错误,我不明白为什么

我注意到如果周期越长,错误出现的频率就越高,为什么? 我必须做什么才能在更大的循环中使用此代码而不会出现任何错误?

var operationNumber = random() % 4  

switch operationNumber {
case 0:
    number1 = random() % (biggestN + 1)
    number2 = random() % (biggestN + 1)
    result = number1 + number2
    operation = "+"
case 1:
    number1 = random() % (biggestN + 1)
    number2 = random() % (number1 + 1)
    result = number1 - number2
    operation = "-"
case 2:
    number1 = (random() % (biggestN + 1))+1
    number2 = (random() % (number1/2))+1
    result = number1 * number2
    operation = "x"
case 3:
    result = random()%biggestN
    number1 = (random()%biggestN)*result
    number2 = number1 / result
    operation = "/"
default:
    break
}

在编辑器中错误的行是 case 0 的行,所以我认为错误在开关内部

感谢您的回答

最佳答案

在情况 3 中,您可能会遇到被零除的错误。在这种情况下,您应该断言 result 不为零。一种方法如下:

result = (random() % biggestN) + 1

编辑:

如果 biggestN 为零,也会发生同样的情况。所以我们可以更新为:

result = (random() % (biggestN + 1)) + 1

关于swift - 代码是正确的,但有时我会遇到运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28925232/

相关文章:

mysql - MySQL 查询中数字的通配符?

c - 查找给定整数的所有精确除数的算法

perl - 如何按字符串中的数字对字符串列表进行排序?

ios - 如何将 SwiftyJSON 对象数组转换为 SwiftyJSON 对象?

objective-c - Objective C 中的公共(public)和私有(private)伞头

swift - 如何指定 UITextField 中的文本类型

ios - 项目中 Xcode 生成的 missing required module 'SwiftShims' 错误

ruby - 在 Ruby 中生成高斯(正态分布)随机数的代码

java - 随机整数 : Cannot be applied to given types

javascript - 如何从 JavaScript 的 Math.random 生成包含边界的 Pareto 随机整数