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

为何C#代码未设置maxNegative,还输出零作为最大负数?

解决C#获取输入最大负数时变量未赋值的问题

你的问题出在第一次遇到负数时,maxNegative是null,导致number > maxNegative的比较逻辑不成立,变量始终没被赋值。而且内层的number <= -1判断完全多余,外层已经做过这个校验了。

问题原因拆解

当你输入第一个负数(比如-5)时,maxNegative还是null,number > maxNegative这个比较在C#里会返回false(值类型和可空值类型比较时,null被视为比任何值都小,但这里第一次遇到负数应该直接赋值,而不是先比较),所以maxNegative一直是null,最后输出时会被默认转成0。

修复后的代码

int number;
int? maxNegative = null;
bool foundNegative = false;

do
{
    Console.Write("Enter a number: ");
    number = int.Parse(Console.ReadLine());

    if (number < 0) // 用<0比<= -1更直观,效果一致
    {
        foundNegative = true;

        // 第一次遇到负数直接赋值,后续再比较是否更大
        if (maxNegative == null || number > maxNegative)
        {
            maxNegative = number;
        }
    }
} while (number != 0);

if (foundNegative)
{
    Console.WriteLine("The maximum negative number is: " + maxNegative);
}
else
{
    Console.WriteLine("No negative numbers entered."); // 替换无意义的"jh"提示
}

关键修改点

  • 去掉内层重复的number <= -1判断,简化逻辑
  • 调整条件为maxNegative == null || number > maxNegative:第一次遇到负数直接赋值,之后只保留比当前maxNegative更大的负数(更接近0的负数)
  • 把无意义的"jh"提示改成明确的"没有输入负数"提示,提升可读性

测试示例:输入-5、-3、-1、0,程序会输出The maximum negative number is: -1,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:10:30