You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的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,提问作者Петр Рубинкович

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 18:01:25