任务是创造一种检查水温的恒温器。 (它只是一个任务)。 我需要一个循环(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))
答案 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
之后继续,则应将其移至另一种方法。