如何编写判断数值处于两个值之间的if语句?
问题解答
一、区间判断的正确写法
要判断rating处于2到5之间(即大于2且小于5),不能用if(rating < 5 > 2)这种错误写法,C#中需要用逻辑与运算符&&连接两个独立条件,正确代码如下:
if (rating > 2 && rating < 5) { // 此处编写满足条件时要执行的代码 }
二、你代码中的其他问题及修正
1. 输入读取的错误
Console.Read()只会读取输入字符的ASCII值,比如输入3会返回51(字符'3'的ASCII码),完全不符合整数评分的需求。应该用int.TryParse()来安全读取并转换输入:
Console.WriteLine("你给星际争霸打几分(0-10)?"); int rating; // 循环直到输入有效的0-10之间的整数 while (!int.TryParse(Console.ReadLine(), out rating) || rating < 0 || rating > 10) { Console.WriteLine("请输入0到10之间的有效数字!"); }
2. if语句后的多余分号
你的每个if后面都加了分号;,这会直接终止if的逻辑判断,导致后面的代码块无条件执行,不管条件是否满足。必须删除这些分号:
错误示例:
if (rating < 5) ; // 分号导致逻辑断裂,后续代码块必执行 { Console.WriteLine("Not good enough!"); }
正确示例:
if (rating < 5) { Console.WriteLine("还不够好!"); Console.ReadLine(); }
3. 逻辑覆盖不完整
原代码中rating=5时没有对应输出,且rating>8的判断顺序错误(会被rating>5先触发)。建议用else if优化逻辑,避免重复判断和遗漏场景:
if (rating < 5) { Console.WriteLine("还不够好!"); Console.ReadLine(); } else if (rating > 8) { Console.WriteLine("我们现在是最好的朋友了 ;)"); Console.ReadLine(); } else if (rating > 5) { Console.WriteLine("哦哦哦哦哦哦耶!"); Console.ReadLine(); } else // 处理rating等于5的情况 { Console.WriteLine("刚好及格!"); Console.ReadLine(); }
三、完整修正后的代码
public static void Main(string[] args) { Console.WriteLine("你给星际争霸打几分(0-10)?"); int rating; while (!int.TryParse(Console.ReadLine(), out rating) || rating < 0 || rating > 10) { Console.WriteLine("请输入0到10之间的有效数字!"); } if (rating < 5) { Console.WriteLine("还不够好!"); Console.ReadLine(); } else if (rating > 8) { Console.WriteLine("我们现在是最好的朋友了 ;)"); Console.ReadLine(); } else if (rating > 5) { Console.WriteLine("哦哦哦哦哦哦耶!"); Console.ReadLine(); } else { Console.WriteLine("刚好及格!"); Console.ReadLine(); } }
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

