【问题标题】:How do i get the smallest and highest value of a string? [closed]如何获得字符串的最小值和最大值? [关闭]
【发布时间】:2017-07-29 15:02:33
【问题描述】:
let smallestgrade = (min(musicgrade, bildgrade, matematicsgrade))  (Dosent work)

等级的替代品是:“A,B,C,D,E,F”

F是最小值,值为0

A是最大值,值为20

如何排序最小值? 我可以这样做吗:

A = 20

B = 17.5

C = 15.0

D = 12.5

E = 10

F = 0

??

【问题讨论】:

  • 这看起来像是某种家庭作业/作业,如果是这种情况,您应该做更多的研究。这是一件相当容易实现的事情。你已经尝试过什么?
  • 它是如何“不工作”的?输入和预期输出是什么? – 您可以使用字符串列表调用 min() 和 max()...
  • 不是家庭作业,只是我编码
  • 我不能用字符串调用 min() 因为字符串还没有值。我如何给出成绩值?例如让 A = 20?

标签: swift string sorting


【解决方案1】:

简单、类型安全的解决方案:

enum Grade : Double {
    case A = 20.0
    case B = 17.5
    case C = 15.0
    case D = 12.5
    case E = 10.0
    case F = 0.0
}

extension Grade : Comparable {
    static func <(lhs: Grade, rhs: Grade) -> Bool {
        return lhs.rawValue < rhs.rawValue
    }
}

let musicGrade = Grade.A
let bildGrade = Grade.E
let mathGrade = Grade.D

let worstGrade = [musicGrade, bildGrade, mathGrade].min()
print(worstGrade)

【讨论】:

    【解决方案2】:

    也许你想要这种东西:

    let gradeValues = ["A" : 20, "B" : 17.5, "C" : 15.0, "D" : 12.5, "E" : 10, "F" : 0]
    let grades = ["B", "A", "C", "A", "B"]
    let minim = grades.min {gradeValues[$0]! < gradeValues[$1]!} // "C"
    

    【讨论】:

    • let minim = grades.max() 恰好产生相同的结果 :)
    • @MartinR 当然,但关键词是“碰巧”。如果我们引入“A+”和“C-”选项会怎样?万一,万一,万一怎么办?我可以继续。事实上,问题在于基于字母的符号和它们的数字含义之间是否需要对应关系,而我的解决方案证明了这种对应关系。
    • 你当然是对的——我的评论只适用于问题中提到的特殊情况。
    • 成功了,谢谢大家!
    猜你喜欢
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多