如何在C#的bool校验程序中避免最小/最大值默认返回0?
解决C#程序中最小/最大值默认初始为0的问题
你可以通过添加一个布尔标志位来判断是否为首次有效输入,完全基于你现有的int.TryParse校验逻辑实现,避免将最小/最大值初始化为0。
修改思路
- 新增一个布尔变量标记是否是第一个有效输入
- 首次输入有效数字时,直接将该数字赋值给
smallest和biggest - 后续输入的数字再与当前的最小/最大值比较并更新
修改后的完整代码
using System; namespace @bool { internal class Program { static void Main(string[] args) { int validCount = 0; int smallest = 0, biggest = 0; bool isFirstValidInput = true; // 循环收集7个有效数字 while (validCount < 7) { Console.WriteLine($"Please enter the {validCount + 1}. number"); string userInput = Console.ReadLine(); if (int.TryParse(userInput, out int number)) { if (isFirstValidInput) { // 首次有效输入,直接初始化最小/最大值 smallest = number; biggest = number; isFirstValidInput = false; } else { // 后续输入,更新最小/最大值 if (number < smallest) { smallest = number; } if (number > biggest) { biggest = number; } } validCount++; } else { Console.WriteLine("Please enter a valid number."); } } Console.WriteLine($"The biggest number is {biggest}"); Console.WriteLine($"The smallest number is {smallest}"); } } }
关键说明
- 循环逻辑更直观:通过
validCount计数,明确收集7个有效数字,无效输入不计数 - 彻底避免0的干扰:只有首次有效输入时才会设置最小/最大值,初始值0不会参与后续比较
- 所有有效输入都被正确处理:没有遗漏任何一次输入的比较逻辑
内容的提问来源于stack exchange,提问作者Imbaland
相关产品推荐
相关产品推荐

