循环中的数组修改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环中的数组修改相关的知识,希望对你有一定的参考价值。

我正在开发一个命令行应用程序。第一个数组(称为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只能存储Doubles,所以你不能将它的元素设置为Strings。

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

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
}

以上是关于循环中的数组修改的主要内容,如果未能解决你的问题,请参考以下文章

解释'空'C数组(int a = {};)

循环中的数组修改

如何将数组中的类随机分配给for循环中创建的元素

c++:在修改 c 字符串数组时帮助纠正无限循环

常用python日期日志获取内容循环的代码片段

PHP数组参数按值,在通过引用循环数组项时被修改