为何我的C#程序输入无效值时不输出错误提示?
问题分析与修复方案
你的代码存在几个关键问题,导致错误提示无法正常显示:
- 类型不匹配错误:你拿字符串变量
page和整数做比较(page <= 1 || page >= 354),C#不允许直接这样跨类型比较,应该用解析后的整数变量result来判断页码范围。 - 循环逻辑颠倒:当前while循环的条件写反了——你想在页码无效时提示错误,但现在的条件是页码在1-354之间才进入循环,完全和需求相反。
- 语法错误:while语句不能直接搭配else,你错误地把if-else的结构塞在了while里面,这会导致编译失败。
- 缺少输入合法性校验:用
Int32.Parse解析输入时,如果用户输入非数字内容,程序会直接崩溃,应该用更安全的int.TryParse来处理。
修复后的代码如下:
using System; namespace KKRIT { internal class Program { static void Main(string[] args) { Console.WriteLine("Здравствуйте! Выберите страницу (от 1 до 354):"); int result; // 循环直到输入合法的页码 while (!int.TryParse(Console.ReadLine(), out result) || result < 1 || result > 354) { Console.WriteLine("Такой страницы не существует,请重新输入:"); } Console.WriteLine("Страница введена успешно"); Console.WriteLine("Переходим на страницу {0}...", result); Console.ReadLine(); } } }
这段代码做了这些优化:
- 用
int.TryParse同时完成输入解析和合法性校验,避免非数字输入导致崩溃 - 调整循环条件:当输入无法解析为整数,或者页码不在1-354范围内时,持续提示错误并要求重新输入
- 简化逻辑,去掉多余的语法错误结构,保证代码编译正常且逻辑符合需求
内容的提问来源于stack exchange,提问作者Петр Рубинкович
相关产品推荐
相关产品推荐

