【问题标题】:Array of strings function error, can't print the order correctly [closed]字符串数组函数错误,无法正确打印订单[关闭]
【发布时间】:2016-06-29 18:37:51
【问题描述】:

我的代码有问题。我需要按字母顺序打印最后一个默认情况,但我不确定它为什么不起作用。我必须使用我的 stringArray,再添加两个字符串并在我的代码中打印出正确的大小写。显然,据我所知,我正在打印原始的、未排序的列表。但我不确定我在这里做错了什么。

这是我的代码

var stringArray = ["zebra", "JAGUAR", "apple"]

func exFunction(par1: [String]) {

var parVar = par1
var secArray = [String]()

switch par1.count{

   //Reverses strings in the array
case 1...3:
    for j in par1 {
        let reverse = j.characters.reverse()
         secArray.append(String(reverse))
    }
    print(secArray)

    //Reverse the element order
case 4...6:
    for _ in 1...par1.count{

        secArray.append(parVar.popLast()!)
    }
    print(secArray)

   //Prints strings in alphabetical order
default:
    for i in par1 {
        secArray.append(i.lowercaseString)
    }
    secArray = secArray.sort()
    for p in par1 {
        print(p)
    }
}
}

exFunction(stringArray)

stringArray.append("Blue")
stringArray.append("eMerald")
exFunction(stringArray)

stringArray.append("beads")
stringArray.append("BEAR")
exFunction(stringArray)

输出应该是:

["arbez", "RAUGAJ", "elppa"]

[“eMerald”、“蓝色”、“苹果”、“捷豹”、“斑马”]

苹果, 珠子, 熊, 蓝色的, 翠, 捷豹, 斑马

【问题讨论】:

  • 您能添加预期的输出吗?

标签: arrays swift function switch-statement


【解决方案1】:

你打错了:

default:
    for i in par1 {
        containerArray.append(i.lowercaseString)
    }
    containerArray = containerArray.sort()
    for p in containerArray { // instead of par1
        print(p)
    }
}

【讨论】:

  • 天哪,我知道这很愚蠢。谢谢大声笑。
  • 这看起来……很眼熟
  • 好吧....出于对你的尊重,我已经把它删掉了。在编辑之前我没有看到你的答案
【解决方案2】:

您有一个错误。数组索引从 0 开始,因此 6 元素数组中的有效索引范围是 05,因此您的 case 4...6 可能会超出数组的末尾。

【讨论】:

  • 我不这么认为。索引从 0 开始,但是一个包含 6 个元素的数组长度为 6,a...b 表示 a(包括)到 b(不包括)
【解决方案3】:

问题是您循环和打印par1 的元素,而不是您排序的containerArray

你怎么看?

//Original Strings
var stringArray = ["zebra", "JAGUAR", "apple"]

func thirdFunction(par1: [String]) { //par1 should have a better name
    var result: [String]

    switch par1.count {
    case 1...3: //Reverses strings in the array
        result = par1.map{ String($0.characters.reverse) }

    case 4...6: //Reverse the element order
        result = par1.reverse

    default:    //Prints strings in alphabetical order
        result = par1.map{ $0.lowercaseString }.sorted()
    }

    print(result)
}

print("//Switch 1-3 Strings")
thirdFunction(stringArray)

print("//Switch 4-6 Strings")
stringArray.append("Blue")
stringArray.append("eMerald")
thirdFunction(stringArray)

print("//Switch >6 Strings")
stringArray.append("beads")
stringArray.append("BEAR")
thirdFunction(stringArray)

输出:

//切换1-3个字符串

["arbez", "RAUGAJ", "elppa"]

//切换4-6个字符串

[“eMerald”、“蓝色”、“苹果”、“捷豹”、“斑马”]

//切换>6个字符串

[“苹果”、“珠子”、“熊”、“蓝色”、“翡翠”、“美洲虎”、“斑马”]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多