hjälp med try catch i C#
Tjena,
jag är väldigt ny med programmering och håller på att lära mig c sharp på gymnasienivå. Jag vill få in try catch i programmet så att den endast tolkar heltal vid inmatningen. eftersom den tolkar en string till int och sedan kastar om den till double så undrar jag vart jag ska stoppa in try catch. Om jag till exempel skriver bokstäver ska den ge ett fel medelande som säger t.ex. "obs bara heltal vid inmatning" Är det lättare att göra en metod i detta fall? är inte ute efter en lösning utan snarare tips på hur jag ska gå till väga.
Tack på förhand
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
string result;//används för ja och nej alternativ i den sekundära if statsen
bool loop = true;
Console.Write("Skriv in temperatur i fahrenheit: ");//skriver ut det som står inan för ""
string str = Console.ReadLine();//tolkar input från tangentbord
int inmatat = Convert.ToInt32(str);//converterar textsträng till heltal
double fahrenheit = (double)inmatat;//en cast som gör om int till double
double celsius = FahToCel(fahrenheit);//anropar metoden FahToCel men variabeln fahrenheit som input
do // skapar villkor för while loopen
{
if (fahrenheit == 167) //villkor för while loopen
{
Console.Write("Optimal temperatur, njut av bastun! tryck på en tangent för att avsluta...");
Console.ReadKey();
break;
}
else if (163 <= fahrenheit && fahrenheit <= 165) //huvud if-sats
{
Console.WriteLine("Du skrev in " + celsius + " grader celsius. Det är en godtagbar temperatur");
Console.WriteLine("Vill du försöka få optimal temperatur? J/N");
result = Console.ReadLine();
if (result.Equals("j", StringComparison.OrdinalIgnoreCase) || result.Equals("Ja", StringComparison.OrdinalIgnoreCase)) //sekundär if-sats med alternativ för ja och nej
{
Console.WriteLine();
Console.Write("skriv in ny temperatur: ");
str = Console.ReadLine();
inmatat = Convert.ToInt32(str);
fahrenheit = (double)inmatat;
celsius = FahToCel(fahrenheit);
}
else if (result.Equals("n", StringComparison.OrdinalIgnoreCase) || result.Equals("Nej", StringComparison.OrdinalIgnoreCase))//sekundär if sats
{
Console.Write("Njut av bastun, tryck på en tangent för att avsluta...");
Console.ReadKey();
}
}
else if (170 <= fahrenheit && fahrenheit <= 1000)
{
Console.Write("Du angav " + celsius + "det är för varmt, sänk temperaturen.");
Console.Write("Skirv in ny lägre temperatur: ");
str = Console.ReadLine();
inmatat = Convert.ToInt32(str);
fahrenheit = (double)inmatat;
celsius = FahToCel(fahrenheit);
}
else
{
Console.Write("Du skrev in " + celsius + " grader celsius. Det är för kallt... Öka temperaturen");
Console.WriteLine();
Console.Write("skriv in ny temperatur: ");
str = Console.ReadLine();
inmatat = Convert.ToInt32(str);
fahrenheit = (double)inmatat;
celsius = FahToCel(fahrenheit);
}
}
while (true);
}
public static double FahToCel(double fah)//metod för att konvertera F till C
{
double cel = fah = (fah - 32) * 5 / 9;
return cel;
}
}
}