如何修改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
相关产品推荐
相关产品推荐

