You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Go程序,使输入负数时输出Invalid Input

问题分析与解决方案

你的程序当前在输入-4 -4 -4这类全负数场景下,错误输出了“All numbers are equal”而非需求指定的“Invalid Input”,核心原因是没有优先校验输入合法性,反而先判断数值的相等关系,导致非法输入绕过了错误提示逻辑。

修改后的代码

package main

import (
    "fmt"
)

func main() {
    var a, b, c int
    fmt.Scan(&a)
    fmt.Scan(&b)
    fmt.Scan(&c)

    // 优先校验输入合法性:任意数非正直接输出错误
    if a <= 0 || b <= 0 || c <= 0 {
        fmt.Println("Invalid Input")
        return
    }

    // 合法输入下的逻辑判断
    if a == b && b == c {
        fmt.Println("All numbers are equal")
    } else if a == b || b == c || a == c {
        fmt.Println("Two numbers are equal")
    } else {
        fmt.Println("All numbers are different")
    }
}

关键修改说明

  • 前置合法性检查:把输入是否为正整数的判断放在最前面,确保非法输入直接被拦截,不会进入后续数值分支
  • 简化冗余判断:移除原代码中a == b && b == a这类重复无效的判断,用a == b && b == c直接判定三数相等,逻辑更简洁
  • 修正错误文本:把原程序中的Invalid request改为需求要求的Invalid Input
  • 优化输出格式:用fmt.Println替代fmt.Print,让输出自动换行,符合控制台输出常规习惯

内容的提问来源于stack exchange,提问作者Belevcek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 07:33:11