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

为何输入字符串时ELSE IF语句仍执行?TryParse逻辑疑问

问题原因分析

你遇到的问题核心在于:当输入非数字时,程序执行完错误提示后没有终止运行,而是继续执行了后续的温度判断逻辑。

具体细节:

  • 输入非数字时,int.TryParse返回false,进入else分支,你给numTemp赋值为0并打印了错误提示,但这个分支执行完毕后,程序会继续往下走,执行后面的if-else if判断链。
  • 因为0小于15,所以必然会触发else if (numTemp < 15)的分支,输出对应的提示。
解决方案

有两种常用的解决思路:

思路1:错误处理后直接终止程序

在错误提示的分支里,添加终止程序执行的代码,不让后续判断逻辑运行。比如用return(如果这段代码在方法内)或者Environment.Exit(0):

Console.WriteLine("Enter the temperature of today: ");
string temperature = Console.ReadLine();
int numTemp;
int number;
if (int.TryParse(temperature, out number))
{
    numTemp = number;
}
else
{
    Console.WriteLine("Value entered, was no number.");
    Console.Read();
    return; // 如果在方法中,用return终止;控制台程序也可以用Environment.Exit(0)
}

// 后续温度判断逻辑
if (numTemp > 15)
{
    Console.WriteLine("The jacket is completely unncessarry for this temperature.");
}
else if (numTemp == 15)
{
    Console.WriteLine("Just the sweater is gonna be perfectly okay for you.");
}
else if (numTemp < 15)
{
    Console.WriteLine("You need a jacket, my friend");
}
else
{
    Console.WriteLine("The weather is for an apocalypse!");
}
Console.Read();

思路2:把温度判断放到解析成功的分支内

只在int.TryParse成功时,才执行温度判断逻辑,错误情况直接提示后结束:

Console.WriteLine("Enter the temperature of today: ");
string temperature = Console.ReadLine();
int numTemp;
if (int.TryParse(temperature, out numTemp))
{
    // 只有解析成功才执行判断
    if (numTemp > 15)
    {
        Console.WriteLine("The jacket is completely unncessarry for this temperature.");
    }
    else if (numTemp == 15)
    {
        Console.WriteLine("Just the sweater is gonna be perfectly okay for you.");
    }
    else if (numTemp < 15)
    {
        Console.WriteLine("You need a jacket, my friend");
    }
    else
    {
        Console.WriteLine("The weather is for an apocalypse!");
    }
}
else
{
    Console.WriteLine("Value entered, was no number.");
}
Console.Read();

另外,你原来的代码里numTemp在错误分支赋值为0其实没必要,因为错误场景下不需要用到这个变量,直接跳过判断逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:50:34