Vinnaren i pepparkakshustävlingen!
2022-02-03, 14:22
  #1
Medlem
Hej! Får det inte att funka som jag vill i min kod. Vill att programmet ska be användaren att använda siffor om användaren nu matat in bokstäver istället
Såhär långt har jag kommit hittils.




Kod:
public static double FahrToCels(int fahr)
		{
			double temp = (double)fahr; // Tilldelar Fahr till double
            temp = ((fahr - 32.0) * 5.0) / 9.0; // Beräknar Fahrenheit till Celsius
            return temp; // Returnerar värde
			
		}
		
		
		//Här startar programmet
		public static void Main(string[] args)
		{
			Console.WriteLine("Welcome please enter the tempeture in Fahrenheit : ");
			int fahrenheit = int.Parse(Console.ReadLine()); //konvertera grader som användaren angett till heltal
            double celsius = FahrToCels(fahrenheit);//konvertera fahrenheit till celsius
            
				do 
			{
				if (celsius < 73.0) //om temp lägre än 73
				{
					Console.WriteLine("Its too cold, please increase the temperature. "); // Skriv ut
					
			
				}
				
				else if (celsius > 77.0) // om temp högre än 77
				{
					Console.WriteLine("Its too hot, please lower the temperature. "); // Skriv ut
					
						
				}
				else 
				{
					Console.WriteLine("Its the perfect temperature now enjoy! "); // Skriv ut
				}
				try // Se till att användaren använder siffror
				{
					
					fahrenheit = int.Parse(Console.ReadLine());
					celsius = FahrToCels(fahrenheit);
				}
				catch
				{
					Console.WriteLine("Please use numbers! "); // Säga till användaren att hen måste använda siffror
					Console.ReadLine();
				}
				} while (celsius < 73.0 || celsius > 77.0 ); // Villkor för att köras om
				
				Console.WriteLine("Its the perfect temperature now enjoy! "); // Skriv ut
			Console.ReadKey();
		}}}
Citera
2022-02-03, 14:28
  #2
Medlem
Diamondgrits avatar
try är din försäkring om att programmet inte kommer att gå åt helvete om något händer. Då hamnar man i catch istället. Men det är bara det som händer inne i try som är säkrat. Jag såg att du hade en rad
Kod:
int fahrenheit = int.Parse(Console.ReadLine());
utanför try, typ andra raden i Main. Det går inte för sig eftersom användaren kan stoppa in saker som gör att int.Parse kraschar. Om det händer utanför try så går det som sagt åt helvete.

Lösning: ta bort farliga saker som du har utanför try. Ha sådant bara inne i try.
Citera
2022-02-03, 14:41
  #3
Medlem
Så jag ska flytta ner den raden innanför try menar du?
Citera
2022-02-03, 15:03
  #4
Medlem
Du kan ju börja med att tala om vad som händer istället för det du vill ska hända

förövrigt kommer programmet krascha bara av att användaren matar in ett decimaltal då int.parse() inte kan hantera det.
__________________
Senast redigerad av epadator 2022-02-03 kl. 15:07.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in