5 svar
74 visningar
matematikergbg 73
Postad: 10 dec 2020

WHILE STATEMENT funkar inte för mig!

Hej, jag vill att man ks uppge ågot temperatur mellan 73-77 som alternativ till det godtagligaför en bastu, men allt som jag trycker på vid när programmet körs så säger den att det är för lågt temperatur även om det är inte det ? Vad gick fel? 

 Sedan vill jag att om de uppger 0 så ska de ske en slumpmässight temperatur mellan 73-77 Fahrenheit då, hur jag går jag tillväga med det ? 




		public static int FahrToCels(int fahr)
		{
			 int celsius =(fahr - 32)*5/9;
			return celsius;
		}
		
		public static void Main(string[] args)
		
		
		{
		Console.WriteLine(" Uppge Fahrenheit ni vill: ");
			int fahrenheit=int.Parse(Console.ReadLine());
			int celsius=FahrToCels(fahrenheit);
			
			do
			{
			
			if (celsius==77 | celsius==76 | celsius==75 | celsius==74 | celsius==73)
			{
		    	Console.WriteLine("Bra val och njut av värmen kära gäst");
		    	Console.ReadKey(true);
			}
			else if (celsius>77)
			{
				Console.WriteLine("Oops, för hög temperatur, vänligen välj ett lägre temperatur");
				Console.ReadKey(true);
			
			}
			
			 }
			else if (celsius<73)
			{
				Console.WriteLine("För låg temperatur, vänligen välj ett högre temperatur");
				Console.ReadKey(true);   
		}
		   while (celsius<77 || celsius>73);
		}
		
		
		}
	}
Laguna 12584
Postad: 10 dec 2020

Jag kan inte C#, men är du säker på att | är rätt operator för "eller"? I andra språk är det bit-vis eller, medan logisk "eller" är ||. 

| är bitvis eller.

Laguna 12584
Postad: 11 dec 2020

Om man flyttar ner den klausulen så att celsius>77 och celsius<73 testas först så räcker det med en enkel "else", så behöver man inte skriva den långa raden av jämförelser.

Tegelhus 201
Postad: 12 dec 2020

Det ser ut som om din while-sats har hamnat i fel block. Ett tips är att kolla upp hur man indenterar korrekt - felet hade varit uppenbart med en korrekt indentering, men blir väldigt svårt att se när indragningen är lite hursomhelst.

Förutom det som övriga här redan har poängterat så innebär det faktum att FahrToCels-funktionen endast arbetar med int att avrundningsfel kan uppkomma. Ponera att temperaturen är 171o F. Matematiskt blir då temperaturen 77,2o C, dvs. för varmt, men division mellan heltalsvärdena (171-32)*5 och 9 borde ge värdet 77o C, dvs. lagom temperatur.

Svara Avbryt
Close