首页 > 解决方案 > 当我运行程序时,我只得到默认结果。即使输入数字不在该范围内

问题描述

程序应该根据输入的数字输出一个字符串。无论我输入什么,我总是得到默认情况

也尝试使用 if 条件。没用

package main

import (
    "fmt"
)

func main() {
    var grade int
    fmt.Print("Input your grade:")
    fmt.Scan(&grade)
    gradeInLetters(grade)
}

const maxScore = 100

func gradeInLetters(s int) {
    switch {
    case maxScore < 100 && maxScore > 90:
            fmt.Println("Grade A")

    case maxScore < 90 && maxScore > 80:
        fmt.Println("Grade B")

    case maxScore < 80 && maxScore > 70:
        fmt.Println("Grade C")

    case maxScore < 70 && maxScore > 60:
        fmt.Println("Grade D")

    default:
        fmt.Println("Grade F")
    }
}

应该根据给定的等级输出字符串

标签: goswitch-statement

解决方案


没有匹配的案例。maxScore被定义为一个常数100,最接近匹配的情况是:

case maxScore < 100 && maxScore > 90:

但是,当然,100并不是“小于 100”;它100。您可能的意思是:

case maxScore <= 100 && maxScore > 90:

哪个会匹配,因为 100“小于或等于”100。

更大的问题是您的输入作为参数传递给函数,s在函数体的任何地方都没有使用;你所有的比较都是针对常量的maxScore,这可能不是你想要的。你真正想要的是:

case s <= maxScore && s > 90:

......或类似的东西 - 目前还不清楚预期的目的maxScore是什么。


推荐阅读