C# do-while循环实现问题求助:无法限制输入值在1-23区间
问题分析与修正
你的代码存在多处逻辑错误,完全偏离了题目要求,以下是具体问题和修正方案:
核心问题点
- 未使用题目要求的
hour变量:你用x作为计数器,但题目要求将输入值存入hour变量,所有判断都应基于hour而非无关的x。 - 输入值未被存储:多次调用
int.Parse(Console.ReadLine())却没有赋值给任何变量,导致输入的数值完全没被使用。 - 循环条件错误:当前循环条件是
while(x<10),意味着最多循环10次就结束,和“输入值在1-23之间才退出”的要求无关。 - 逻辑冗余混乱:循环体里重复读取输入,判断逻辑基于无关的
x变量,完全无法实现需求。
修正后的代码
class numbersLoop { static void Main() { int hour; do { Console.WriteLine("Write a number:"); // 读取输入并赋值给hour变量 hour = int.Parse(Console.ReadLine()); // 只要hour不在1-23范围内,就继续循环 } while (hour < 1 || hour > 23); Console.WriteLine("The right number.."); } }
修正说明
- 定义了题目要求的
hour变量,用于存储每次输入的整数。 - 将
int.Parse(Console.ReadLine())的结果赋值给hour,确保输入值被正确捕获。 - 调整循环条件为
while (hour < 1 || hour > 23),意思是只要hour不在1到23的范围内,就继续循环,完全符合题目“仅当hour在1-23之间时退出循环”的要求。 - 移除了冗余的输入读取和无关的
x计数器,简化逻辑,让代码更清晰。
内容的提问来源于stack exchange,提问作者Asmaa Khaled
相关产品推荐
相关产品推荐

