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

C#如何实现用户输入带点而非逗号的小数到double变量时的错误提示

实现方案

你需要的小数分隔符格式校验逻辑,只需要先留存用户输入的原始字符串做格式检测,再配合指定解析规则即可实现,同时顺便修正你原有代码里的几处问题:

  • 原代码第三个校验分支存在变量名拼写错误,定义的ossz3后续调用了不存在的res3,会直接触发编译报错
  • 三角不等式判断不全,仅校验了a+b>c,缺少a+c>b、b+c>a两组判断,会出现逻辑漏洞
  • 原有三个判断分支逻辑完全冗余,没必要重复写多遍

完整修改后代码

using System;
using System.Globalization;

namespace HW_002_01
{
    class Program
    {
        // 封装统一的边长输入校验方法
        static double GetValidSide(string prompt)
        {
            while (true)
            {
                Console.Write(prompt);
                string input = Console.ReadLine().Trim();
                
                // 检测是否使用点作为小数分隔符,命中直接报错
                if (input.Contains('.'))
                {
                    Console.WriteLine("错误:请使用逗号作为小数分隔符,请勿输入点");
                    continue;
                }

                // 指定用逗号作为小数分隔符的规则解析,避免系统区域设置影响结果
                NumberFormatInfo format = new NumberFormatInfo() { NumberDecimalSeparator = "," };
                if (double.TryParse(input, NumberStyles.Float, format, out double side) && side > 0)
                {
                    return side;
                }
                Console.WriteLine("错误:请输入合法的正数值");
            }
        }

        static void Main(string[] args)
        {
            double a = GetValidSide("Please enter the length of the triangle's a side (cm)! ");
            double b = GetValidSide("Please enter the length of the triangle's b side (cm)! ");
            double c = GetValidSide("Please enter the length of the triangle's c side (cm)! ");

            // 补全三角不等式的三组判断
            if (a + b > c && a + c > b && b + c > a)
            {
                Console.WriteLine("Triangle equality is present.");
            }
            else
            {
                Console.WriteLine("Triangle equality is not present.");
            }

            Console.ReadKey();
        }
    }
}

核心改动说明

  1. 单独封装了输入校验方法,统一处理格式检测、解析逻辑,避免代码重复
  2. 先读取原始输入字符串检测是否包含.,命中直接弹出你需要的分隔符错误提示
  3. 手动指定解析规则用逗号作为小数分隔符,不会受操作系统默认区域设置的影响
  4. 补全了三角不等式的判断逻辑,避免边长输入顺序不同导致的判断错误
  5. 加入了循环重试逻辑,用户输入错误不需要重启程序就可以重新输入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:09:03