c循环需要输入两次
本文关键字:两次 输入 循环 | 更新日期: 2023-09-27 18:07:28
我有一个循环问题,我必须输入两次温度才能启动循环。我想我知道问题出在哪里,只是不知道如何解决。我已经编码了三个星期,所以我在这方面完全是个初学者。
以下是我遇到问题的代码部分:
{
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(,但也许还有另一个解决方案可以解决必须输入两次温度的问题?
真希望有人能帮我解决这个问题。
您的代码中有比您共享的内容更多的内容,但添加我认为您需要的内容是将读线移动到另一种方法:
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());
}
如果问题是您需要访问循环范围之外的变量,那么您可以在不分配变量的情况下声明它们。
{
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.");
}
这里的要点是:无论何时执行Console.ReadLine()
,程序都会等待来自控制台的一些输入。由于在循环之前和循环内部会遇到一个Console.ReadLine()
,因此需要输入两次值才能"启动"循环。
更重要的是:do-while循环至少执行一次,因为只有在循环迭代后才会检查条件。如果您将其更改为while循环,在每次循环迭代之前检查条件,您可能会得到您所期望的:
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);
}
我还想指出的是,如果用户输入了无法解析为int的内容,那么现在的代码将抛出异常。这通常会导致程序终止,除非用try-catch块以某种方式捕捉到异常。