C#While循环只返回一次迭代,而不考虑输入



试图编写一组简单的代码,将fahrenheit转换为celsius,有三个集合条件决定了会发生什么。要么太冷,要么刚刚好,要么太热。出于某种原因,无论输入什么,它都只会回复并说它太冷了。我真的不明白为什么。这是迄今为止的代码;

{
class Program
{
static int FahrenheitToCelsius(int fahrenheit)
{
int celsius = ((fahrenheit - 32) * 5 / 9);
return celsius;
}
static void Main(string[] args)
{
Console.WriteLine("Please enter the desired temperature: ");
int fahrenheit = Convert.ToInt32(Console.ReadLine());
int celsius = FahrenheitToCelsius(fahrenheit);
while (celsius != 75)
if (celsius < 73)
{
Console.WriteLine("Too cold! Please enter a warmer temperature.");
Console.ReadLine();
}
else if (celsius > 77)
{
Console.WriteLine("Too warm! Please enter a colder temperature.");
Console.ReadLine();
}
else if (celsius == 75)
{
Console.WriteLine("Optimal input! Begin heating up.");
break;
}
else
{
Console.WriteLine("Invalid input! Please input a temperature.");
}
}
}
}

也许您只收到相同的消息,因为您没有更改celsius 的值

static int FahrenheitToCelsius(int fahrenheit)
{
int celsius = ((fahrenheit - 32) * 5 / 9);
return celsius;
}
static void Main(string[] args)
{
Console.WriteLine("Please enter the desired temperature: ");
int fahrenheit = Convert.ToInt32(Console.ReadLine());
int celsius = FahrenheitToCelsius(fahrenheit);
Console.WriteLine("C = " + celsius);
int i = 0;
while (celsius != 75) {
if (i>0)
{
int x = Convert.ToInt32(Console.ReadLine());
celsius = FahrenheitToCelsius(x);
}


if (celsius < 73)
{
Console.WriteLine("Too cold! Please enter a warmer temperature.");

}
else if (celsius > 77)
{
Console.WriteLine("Too warm! Please enter a colder temperature.");


}
else if (celsius == 75)
{
Console.WriteLine("Optimal input! Begin heating up.");
break;
}
else
{
Console.WriteLine("Invalid input! Please input a temperature.");

}


i++;
}
}
}

首先,修复您的转换。从一个单位转换为另一个单位时,不应删除十进制值。

static double FahrenheitToCelsius(double f) => (f - 32) * 5.0 / 9.0;

现在让我们谈谈你的if/else。在您的代码中

T<=163太冷了
T=164165166169170均为无效温度
T>=171温度过高;

没有理由将这些无效权利置于范围的中间
而且没有关于无效温度的解释,所以只需将其删除即可。

有一个数字可以满足这些条件的倍数吗?x<73、x>77,x==75…
我们可以安全地放下所有其他东西。

if (tempC < 73)
{
Console.WriteLine("Too cold! Please enter a warmer temperature.n");
}
if (tempC > 77)
{
Console.WriteLine("Too warm! Please enter a colder temperature.n");
}
if (tempC == 75)
{
Console.WriteLine("Optimal input! Begin heating up.n");
}

使用Do/While循环,我们有:

static void Main(string[] args)
{
double tempC , tempF;
do
{
Console.WriteLine("Please enter the desired temperature: ");
tempF = Convert.ToDouble(Console.ReadLine());
tempC = FahrenheitToCelsius(tempF);
Console.WriteLine($"{tempF,4:F}°F, {tempC,4:F}°C");
if (tempC < 73)
{
Console.WriteLine("Too cold! Please enter a warmer temperature.n");
}
if (tempC > 77)
{
Console.WriteLine("Too warm! Please enter a colder temperature.n");
}
if (tempC == 75)
{
Console.WriteLine("Optimal input! Begin heating up.n");
}
}
while (tempC != 75);
}

Nb将变量从华氏度和摄氏度重命名为温度F和温度C
Temperatur单元的查找是:C、F、K、R、De、N、Re、Ro。
我不确定没有谷歌是否可以写出这些单元的名称。

相关内容

  • 没有找到相关文章

最新更新