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

C#控制台输入整数求最大值问题及代码错误排查

问题修复方案

原代码的核心问题

  • 错误使用Max()方法:你调用的a[i].Max()是针对字符串的Linq方法,它会返回字符串中单个字符的ASCII码最大值,而非将输入的字符串转换为整数后比较大小。比如输入"6"时,会得到字符'6'的ASCII值54;输入"-9"时,会得到字符'9'的ASCII值57,这完全偏离了求整数最大值的需求。
  • 未处理首次输入0的边界:当首次输入0时,程序直接跳出循环,此时max还是初始值int.MinValue(即-2147483648),不符合逻辑。

修正后的代码

using System;

public class TestNumericDataTypesOperations
{
    public static void Main()
    {
        int max = int.MinValue;
        bool hasValidInput = false; // 标记是否输入过有效整数

        while (true)
        {
            string input = Console.ReadLine();
            // 先判断是否输入0,是则停止循环
            if (input == "0")
            {
                break;
            }

            // 尝试将输入转换为整数
            if (int.TryParse(input, out int num))
            {
                hasValidInput = true;
                // 更新最大值
                if (num > max)
                {
                    max = num;
                }
            }
            else
            {
                Console.WriteLine("请输入有效的整数!");
            }
        }

        // 根据是否有有效输入输出结果
        if (hasValidInput)
        {
            Console.WriteLine(max);
        }
        else
        {
            Console.WriteLine("未输入任何有效整数");
        }
    }
}

代码说明

  • 去掉了不必要的字符串数组,改用while(true)循环实现任意次数输入,比固定长度的数组更灵活。
  • 使用int.TryParse处理输入转换,避免输入非整数时程序崩溃。
  • 增加hasValidInput标记,处理首次输入0的情况,此时输出提示信息而非默认的最小值。
  • 每次转换成功后,将当前整数与max比较,仅当当前数更大时更新max,符合求最大值的逻辑。

测试验证

  • 输入4、-5、22、6、-99、7、0,输出22,符合示例需求。
  • 输入0,输出未输入任何有效整数,解决了原边界问题。
  • 输入6、4、-9、7、0,输出7,符合整数最大值的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:26:01