if/else-if语句不起作用,程序总是使用第一个if



我正在努力做一些家庭作业。这是练习if语句。我的代码出了什么问题?它总是以写";Allezàl‘hôpital;即使";温度";变量值小于39。

这是我的代码:

using System;
using static System.Console;
namespace E4_2
{
internal class Program
{
static void Main(string[] args)
{
string texteÀAfficher;
WriteLine("Veuillez indiquez la température du patient en celcius :");
int temperature = Convert.ToInt32(Read());
if (temperature > 39)
{
texteÀAfficher = "Allez à l'hopital";
}
else if (temperature > 38)
{
texteÀAfficher = "Prendre de l'aspirine ou de l'eau";
}
else if (temperature > 37)
{
texteÀAfficher = "Se reposer";
}
else
{
texteÀAfficher = "Prendre l'air et bien s'habiller";
}
WriteLine(texteÀAfficher);
}
}

}

if/else语句正在工作[1]这不是问题所在。最简单、最符合逻辑的解释是temperature变量的值实际上大于39。

但你输入的温度低于39度,对吧?

嗯,是的,但是。。。

您不使用控制台。Read((方法正确。如果你查看它的官方文档,你会发现它的返回类型是int。它返回一个字符(或者更确切地说是一个Unicode字符代码值(作为int值。这意味着,转换。ToInt32在这里没有做任何有用的事情,因为将int值转换为int显然会产生相同的int值。

因此,这意味着temperature变量包含您首先键入的任何字符的Unicode字符代码值。如果要键入38,则键入的第一个字符是3。字符3的Unicode字符代码值为51。值51明显大于39。

自控制台。Read((只读取单个字符,对于输入多个字符/数字的值来说,这不是很实用(至少不是很容易(。相反,我建议使用控制台。ReadLine((并将结果字符串解析为int:

string input = Console.ReadLine();
int temperature = int.Parse(input);

[1]CCD_ 14/CCD_;面包和黄油";几乎所有用C#编写的程序的控制流。它一直有效,一直都有效,一直有效,而且永远有效。它只需要工作。想象一下问题标题if/else不起作用的说法是真的。你能想象吗,如果if/else被破坏,几乎所有有意义的C#程序都会被破坏,无法正常运行。if/else不起作用是一个非常不寻常的说法,如果不拿出真正的确凿证据,这是站不住脚的

最新更新