gpt4 book ai didi

arrays - 循环中的数组修改

转载 作者:行者123 更新时间:2023-11-30 10:51:47 25 4
gpt4 key购买 nike

我正在开发一个命令行应用程序。第一个数组(叫做firstArray,是的)是用户通过readLine()输入的结果,它的所有元素都是Double。现在我必须创建第二个数组,并将计算结果应用于第一个数组。一些结果是 NaN,这是三角计算的原因。我需要将所有 NaN 更改为字符串,但收到错误“无法将‘String’类型的值分配给‘Double’类型”。如何解决这个问题?

func calcLn () -> [Double] {

var calculatedArray = [Double]()

for item in firstArray {
var result = log(Double((-100))/(cos(item)))
calculatedArray.append(result)
}

for index in 0..<calculatedArray.count {
if calculatedArray[index].isNaN {
calculatedArray[index] = String("can't calculate")

最佳答案

数组只能存储一种类型的内容。 calculatedArray 只能存储 Double,因此您无法将其元素设置为 String

您可以创建一个名为 outputArray 的新数组来存储字符串,并将所有 double 转换为字符串:

var outputArray = [String]()
for index in 0..<calculatedArray.count {
if calculatedArray[index].isNaN {
outputArray.append("can't calculate")
} else {
outputArray.append("\(calculatedArray[index])")
}
}

您的 calcLn 方法返回一个 [Double],但您似乎想返回 outputArray。如果是这种情况,您需要更改其签名以返回 [String]

请注意,您可以使用 map 进行数组转换。这是代码的较短版本:

func calcLn () -> [String] {
let calculatedArray = firstArray.map { log(100.0/cos($0)) }
let outputStringsArray = calculatedArray.map { $0.isNaN ? "can't calculate" : "\($0)" }

return outputStringsArray
}

关于arrays - 循环中的数组修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54385813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com