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(,但也许还有另一个解决方案可以解决必须输入两次温度的问题?

真希望有人能帮我解决这个问题。

c循环需要输入两次

您的代码中有比您共享的内容更多的内容,但添加我认为您需要的内容是将读线移动到另一种方法:

          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块以某种方式捕捉到异常。