c#循环需要输入两次

时间:2016-09-17 20:23:38

标签: c# loops do-while

我遇到循环问题,我必须输入两次温度才能启动循环。我想我知道问题在哪里,我只是不知道如何解决它。我已经编写了三个星期的代码,所以我是初学者。

以下是我遇到问题的代码部分:

{
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(),但也许有另一个修复程序可以解决这个必须输入两次温度的问题?

真的希望有人可以帮我解决这个问题。

3 个答案:

答案 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以某种方式捕获异常。