当我写一些像“tre”而不是整数的东西时,try catch 会写出,但然后它会继续 while 循环。当我写一些不是整数的东西时,如何让它保持在 try catch 中?
private static double FahrToCels(int f)
{
double fahrenheit = f;
double celsius = (fahrenheit - 32) * 5 / 9;
return celsius;
}
private static void Main(string[] args)
{
int fahrenheit = 0;
double celsius = 0;
Console.WriteLine("Hej och välkommen till bastun!");
Console.Write("Skriv in en temperatur i Fahrenheit: ");
try
{
fahrenheit = int.Parse(Console.ReadLine());//Användaren skriver in ett värde som lagras i Fahrenheit
}
catch
{
Console.WriteLine("Ogiltig inmatning! Ange temperaturen i heltal: ");
}
celsius = FahrToCels(fahrenheit);//I variabeln celsius finns antal grader omvandlat från Fahrenheit till Celsius
celsius = Math.Round(celsius, 0);
while (celsius < 73 || celsius > 77)
{
if (celsius < 73)//Om användaren anger en för låg temperatur sker det inom måsvingarna
{
Console.WriteLine("Temperaturen är för låg!");
Console.Write("Ange en högre temperatur: ");
fahrenheit = int.Parse(Console.ReadLine());//Användaren får skriva in ett nytt värde som sparas i variabeln fahrenheit
celsius = FahrToCels(fahrenheit);//I variabeln celsius finns antal grader omvandlat från Fahrenheit till Celsius
celsius = Math.Round(celsius, 0);
}
else if (celsius > 77)//Om användaren anger en för hög temperatur sker det inom måsvingarna
{
Console.WriteLine("Temperaturen är för hög!");
Console.Write("Ange en lägre temperatur: ");
fahrenheit = int.Parse(Console.ReadLine());//Användaren får skriva in ett nytt värde som sparas i variabeln fahrenheit
celsius = FahrToCels(fahrenheit);//I variabeln celsius finns antal grader omvandlat från Fahrenheit till Celsius
celsius = Math.Round(celsius, 0);
}
}
您似乎想继续询问用户,直到给出有效的整数。你可以在循环中完成它:
private static int ReadFahrenheit() {
while (true) {
Console.WriteLine("Please, provide temperature in Fahrenheit");
if (!int.TryParse(Console.ReadLine(), out int result))
Console.WriteLine("Not a valid integer, please, try again");
else if (result < -459)
Console.WriteLine("Not a valid value, please, try again");
else
return result;
}
}
然后你就可以像这样简单地使用它
private static void Main(string[] args)
{
int fahrenheit = ReadFahrenheit();
...