10 svar
37 visningar
matematikergbg är nöjd med hjälpen!
matematikergbg 55
Postad: 14 nov 2020

formuleringen av WHILE

Hej, när jag provkör mitt programm får jag problemet att ";" förväntas där vid while raden, men jag misstänker att något annat inte stämmer! Något tips och förklaring?

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

Det ser att att vara just det som är fel. 

matematikergbg 55
Postad: 14 nov 2020

Hej Laguna,

När jag tilläger ; vid while raden så blir det mer problem då den säger att namnet celcius inte finns i den aktuella kontexten ?

Vad händer om du ändrar variabelnamnet cel högst upp till celsius?

undrar en som programmerat lite i BASIC på 80-talet och sem läst en kurs i FORTRAN77, som kändes gammalt redan år 1984 (men som snappat upp ett och annat av att vara mamma till tre datortokar).

Laguna Online 11626
Postad: 14 nov 2020

Så är det, deklarationen av en variabel gäller bara inuti det block där den är deklarerad.

Sätt "int celcius;" före "do" och byt ut "int celcius" mot "celcius" där den deklareras nu.

(Jag skulle kalla den "celsius", för det är så det stavas.)

matematikergbg 55
Postad: 14 nov 2020

Hej det funkade nu men jag undrar värför mpste man ha int celsius före do?

matematikergbg 55
Postad: 14 nov 2020

vad händer om jag byter all int som finns mot double?

Laguna Online 11626
Postad: 14 nov 2020
Smaragdalena skrev:

Vad händer om du ändrar variabelnamnet cel högst upp till celsius?

undrar en som programmerat lite i BASIC på 80-talet och sem läst en kurs i FORTRAN77, som kändes gammalt redan år 1984 (men som snappat upp ett och annat av att vara mamma till tre datortokar).

Det är inuti en annan metod, så det påverkar inte det som händer i 'Main'. 

Laguna Online 11626
Postad: 14 nov 2020
matematikergbg skrev:

Hej det funkade nu men jag undrar värför mpste man ha int celsius före do?

Deklatationen gäller bara till slutet av det block där deklarationen står, så efter klammern före ditt while-test finns inte variabeln längre.

Om du vill testa med double i stället så gör det. 

matematikergbg 55
Postad: 14 nov 2020

jag försöker göra så att om människan trycker 0 så ska ett slump siffror i fehrenheit mellan 160 och 171 genereras och används i resterande uträkning.

if (fahrenheit==0)
				
			{
				Random randomerare= new Random();
				int fahr=randomerare.Next(163,171);
			}

men det ger inte den förväntade effekt då den följer de andra logiken.
Den uppger att 0 är för låg temperatur istället för att generera slump talen.

Laguna Online 11626
Postad: 14 nov 2020

Din nya variabel 'fahr' används inte och slutar finnas redan på nästa rad. Du får sätta 'fahrenheit' till det nya värdet i stället.

Svara Avbryt
Close