我当时在Swift上编写计算器应用程序,而我对Swift还是很陌生。因此,我对语法和所有内容一无所知。当我调试我的代码时,我得到了错误并且代码的错误被0除。我已经调试了所有东西,但是我不知道如何解决它,任何帮助将不胜感激,我只是从Swift和iOS开始。我正在编写的应用程序是针对mac终端的,因此我的程序从字符串中获取用户输入,然后将其转换为int。
这是我正在使用的代码
var average = 0;
let count = nums.count - 1
for index in 0...nums.count - 2 {
let nextNum = Int(nums[index])
average += nextNum!
}
return average / count
}
答案 0 :(得分:1)
您要从数组元素计数中减去1,我认为是因为从零开始的编号会影响它,但是在这种情况下是不需要的。
您应该检查一个空数组,因为这将导致被零除。您也可以使用reduce
来简单地将一个数字数组求和,然后除以计数。
func average(of nums: [Float]) -> Float? {
let count = nums.count
if (count == 0) { return nil }
return nums.reduce(0, +) / Float(count)
}
答案 1 :(得分:0)
除数可能为0。如@MartinR所说,如果nums
中只有1个对象,则count = nums.count -1
将为零,而1 / 0
为未定义状态。 / p>
又一个问题,我发现您循环使用0...nums.count - 2
,但应该是0...nums.count - 1
。您也可以写少于条件的条件作为
0..<nums.count
或0..<count
使用
var average = 0;
let count = nums.count
for index in 0..<count {
let nextNum = Int(nums[index])
average += nextNum!
}
return average / count
您可以对优化的解决方案使用快速的高阶函数,即使您的nums
数组中没有任何数字,平均值也将返回0。为:
let count = nums.count
let avg = nums.reduce(0, +) / count
答案 2 :(得分:0)
尝试一下:
var sum = 0;
let count = nums.count
for index in 0...nums.count - 1 {
let nextNum = Int(nums[index])
sum += nextNum!
}
return count != 0 ? sum/count : 0