嵌套循环(级别:初学者)

时间:2017-03-25 22:48:38

标签: c#

enter image description here任务是创造一种检查水温的恒温器。 (它只是一个任务)。 我需要一个循环(loop1)退出,如果" Q"按钮被按下,在该循环内有另一个循环(loop2),其中2个条件总是返回到loop1(无论满足什么条件,它只是一个不同的消息将被显示)。我写了一些代码,但它有一个错误,我无法弄清楚问题是什么。 Plz的帮助。 附:我只是一个初学者,所以请不要过于刻板。

f.checkExist <- function(x) {
 grepl(df[x, 8], df[x, 1:7])
}

df$exists <- grepl(T, lapply(1:nrow(df), f.checkExist))

4 个答案:

答案 0 :(得分:0)

尝试以下代码......

    static void Main(string[] args)
    {
        while (true)
        {
            int temperature;
            Console.WriteLine("Enter the temp");
            string choice = Console.ReadLine();
            if (choice.ToUpper().Equals("Q"))
                break;
            temperature = Convert.ToInt32(choice);
            if (temperature < 17 || temperature > 25)
            {
                Console.WriteLine("Temp is {0} and its too {1} to take a bath", temperature, temperature < 17 ? "cold" : "hot");
            }
            else
            {
                Console.WriteLine("Temp is MADE TO 20, thou it is {0}, its ok to bath", temperature);
            }
        }
    }

答案 1 :(得分:0)

你需要评估天选&#34;选择&#34;等于&#34; Q&#34;在尝试将其转换为int之前。

你正在获得例外,因为你正试图转换&#34; Q&#34;到int。

同时考虑到&#34; .ToUpper()&#34;在你的选择检查上,所以你不要只检查小写或大写。

if (choice.ToUpper() == "Q")
    break;

temperature = Convert.ToInt32(choice);
if (temperature < 17 || temperature > 25)
{
    Console.WriteLine("Temp is {0} and its too cold to take a bath", temperature);
    Console.WriteLine("Enter the temp again");
}
else
{
    Console.WriteLine("Temp is MADE TO 20, thou it is {0}, its ok to bath", temperature);
    Console.WriteLine("Enter the temp");
    temperature = Convert.ToInt32(Console.ReadLine());
}               

你应该知道输入除了&#34; Q&#34;之外的任何其他字符。会抛出异常。

考虑使用int.TryParse()方法检查用户输入是否可以解析为int。

答案 2 :(得分:0)

我已经为您重新编写了此代码,删除了逻辑和运行时错误,请查看此代码。这完全根据你的陈述!。

static void Main(string[] args)
      {
            while (true)
            {
                int temperature;
                Console.WriteLine("Enter the temp");
                string choice = Console.ReadLine();

                if ( int.TryParse(choice, out temperature))
                {

                    if (temperature < 17 || temperature > 25)
                    {
                        Console.WriteLine("Temp is {0} and its too cold to take a bath", temperature);
                    }
                    else
                    {
                        Console.WriteLine("Temp is MADE TO 20, thou it is {0}, its ok to bath", temperature);
                    }

                }
                else if(choice != "Q" && choice != "q")
                {
                    Console.WriteLine("\n * Invalid Entry * ");
                }



                if (choice == "Q" || choice== "q")
                    break;


            }
        }

答案 3 :(得分:0)

我就是这样做的:

while (true)
{
    int temperature = 0;
    string choice;
    do
    {
        Console.Write("Enter the temperature: ");
        choice = Console.ReadLine();
        if (choice.ToUpper().Equals("Q"))
            return;

    } while (Int32.TryParse(choice, out temperature) == false);

    if (temperature < 17 || temperature > 25)
    {
        Console.WriteLine("Temp is {0} and its too {1} to take a bath", temperature, temperature < 17 ? "cold" : "hot");
    }
    else
    {
        Console.WriteLine("Temp is MADE TO 20, thou it is {0}, it's ok to bath", temperature);
    }
}

此处应用程序要求输入“Q”或有效整数之前的温度。请注意,要从两个循环中退出,我只是使用return,因为这应该是一个小方法。如果您的逻辑在外部while之后继续,则应将其移至另一种方法。