我遇到循环问题,我必须输入两次温度才能启动循环。我想我知道问题在哪里,我只是不知道如何解决它。我已经编写了三个星期的代码,所以我是初学者。
以下是我遇到问题的代码部分:
{
Console.WriteLine("Enter the temperature in Fahrenheit: ");
int fahrenheit = int.Parse(Console.ReadLine());
int celsius = FahrToCels(fahrenheit);
do
{
fahrenheit = int.Parse(Console.ReadLine());
celsius = FahrToCels(fahrenheit);
if (celsius < 73)
{
Console.WriteLine(celsius);
Console.WriteLine("It's too cold, raise the temperature.");
}
我想你可以看出我的意思。我可以让循环工作的唯一方法是重复int.Parse(Console.ReadLine(),但也许有另一个修复程序可以解决这个必须输入两次温度的问题?
真的希望有人可以帮我解决这个问题。
答案 0 :(得分:3)
您的代码比您分享的代码更多,但添加我认为您需要的是将readline移到另一种方法:
do
{
int farenheight = getTemp();
celsius = FahrToCels(fahrenheit);
if (celsius < 73)
{
Console.WriteLine(celsius);
Console.WriteLine("It's too cold, raise the temperature.");
}
}
public int getTemp(){
return int.Parse(Console.ReadLine());
}
答案 1 :(得分:1)
如果问题是您需要访问循环范围之外的变量,那么您可以在不指定它们的情况下声明它们。
{
Console.WriteLine("Enter the temperature in Fahrenheit: ");
int fahrenheit;
int celsius;
do
{
fahrenheit = int.Parse(Console.ReadLine());
celsius = FahrToCels(fahrenheit);
if (celsius < 73)
{
Console.WriteLine(celsius);
Console.WriteLine("It's too cold, raise the temperature.");
}
答案 2 :(得分:1)
这里的要点是:每当你执行Console.ReadLine()
时,程序都会等待来自控制台的一些输入。由于您在循环之前遇到一个Console.ReadLine()
而在循环中遇到一个int fahrenheit = int.Parse(Console.ReadLine());
int celsius = FahrToCels(fahrenheit);
while (celsius < 73)
{
Console.WriteLine(celsius);
Console.WriteLine("It's too cold, raise the temperature.");
Console.WriteLine("Enter the temperature in Fahrenheit: ");
fahrenheit = int.Parse(Console.ReadLine());
celsius = FahrToCels(fahrenheit);
}
,因此您需要输入一个值两次到#34; start&#34;循环。
还有什么:do-while-loop至少执行一次,因为只在循环迭代后才检查条件。如果将其更改为while循环,在每次循环迭代之前检查条件,您可能会得到您期望的结果:
FROM
我还想指出,如果用户输入无法解析为int的内容,现在的代码将抛出异常。这通常会导致程序终止 - 除非使用try-catch-block以某种方式捕获异常。