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

C#计算器开发需求:输入小数、非exit字符串时输出错误提示

C#控制台计算器输入校验修改方案

完整修改后代码

using System;

namespace LabExer2_CMS
{
    class Program
    {
        static void Main(string[] args)
        {
            int fnum;
            int snum;
            int answer;
            string inputStr;

            Console.WriteLine("CALCULATOR");
            Console.WriteLine(" ");

            // 第一个数字输入校验
            Console.WriteLine("First Number: ");
            inputStr = Console.ReadLine().Trim();
            // 先判断是否是退出命令
            if (inputStr.Equals("exit", StringComparison.OrdinalIgnoreCase))
            {
                Console.WriteLine("程序已退出");
                return;
            }
            // 校验是否为合法整数(int.TryParse会自动判定小数、非数字为不合法)
            if (!int.TryParse(inputStr, out fnum))
            {
                // 判断输入是否包含小数点,对应需求1的小数错误提示
                if (inputStr.Contains("."))
                {
                    Console.WriteLine("错误:不允许输入小数,请输入有效整数!");
                }
                // 其他非法字符串,对应需求2的错误提示
                else
                {
                    Console.WriteLine("错误:输入内容非法,仅可输入整数、指定运算符或\"exit\"退出程序!");
                }
                Console.ReadKey();
                return;
            }

            // 运算符输入校验
            Console.WriteLine("Select an operator: (+, -, * )");
            inputStr = Console.ReadLine().Trim();
            if (inputStr.Equals("exit", StringComparison.OrdinalIgnoreCase))
            {
                Console.WriteLine("程序已退出");
                return;
            }
            if (inputStr != "+" && inputStr != "-" && inputStr != "*")
            {
                Console.WriteLine("错误:输入内容非法,仅可输入+、-、*运算符或\"exit\"退出程序!");
                Console.ReadKey();
                return;
            }
            string op = inputStr;

            // 第二个数字输入校验
            Console.WriteLine("Second Number: ");
            inputStr = Console.ReadLine().Trim();
            if (inputStr.Equals("exit", StringComparison.OrdinalIgnoreCase))
            {
                Console.WriteLine("程序已退出");
                return;
            }
            if (!int.TryParse(inputStr, out snum))
            {
                if (inputStr.Contains("."))
                {
                    Console.WriteLine("错误:不允许输入小数,请输入有效整数!");
                }
                else
                {
                    Console.WriteLine("错误:输入内容非法,仅可输入整数、指定运算符或\"exit\"退出程序!");
                }
                Console.ReadKey();
                return;
            }

            // 计算逻辑
            if (op == "+")
            {
                answer = fnum + snum;
                Console.WriteLine("The answer is: " + answer);
            }
            else if (op == "-")
            {
                answer = fnum - snum;
                Console.WriteLine("The answer is: " + answer);
            }
            else if (op == "*")
            {
                answer = fnum * snum;
                Console.WriteLine("The answer is: " + answer);
            }

            Console.Write("PRESS ENTER TO EXIT");
            Console.ReadKey();
        }
    }
}

核心修改说明

  • 移除了类中无用的重复字段,将数字类型从double改为int适配整数输入要求
  • 所有输入节点优先校验是否为exit命令,匹配则直接退出程序
  • 数字输入使用int.TryParse()做合法性判定:
    • 输入内容包含小数点时触发小数输入错误提示,对应需求1
    • 其余非整数且非exit的输入触发非法字符串错误提示,对应需求2
  • 运算符输入仅允许+/-/*和exit,其余输入触发非法字符串错误提示
  • 优化了原有多if判断为else if,避免无效判断逻辑

内容的提问来源于stack exchange,提问作者Heisenberg ggwp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:45:01