Premiär! Fyndchans i SweClockers Månadens Drop

Else if funkar inte, programmering 1

Permalänk

Else if funkar inte, programmering 1

Hej! Jag behöver hjälp. Jag har inte hittat något alls genom Google eller på forum som jag tycker stämmer in på mitt problem (kan såklart vara jag som inte har sökt på "rätt" sätt). Det är en uppgift i min programmering 1 kurs där jag inte får till if-satsen, trots att Visual Studios säger no issues found.
Jag vet att koden är korrekt ner tom "nr = 65 - nr". Eftersom jag provade att kopiera all kod ner tom den till en annan fil och skrev Console.Write(nr); och den räknade då ut rätt värde på nr. Så därför måste det vara else if biten som på något sätt inte stämmer.
När jag kör koden som den ser ut på bilden får jag upp fråga1 och sedan fråga2. Men när jag svarat på fråga2 försvinner konsolfönstret. Kan någon se vad som är fel i min kod? Tack på förhand!

namespace Uppgift_1_Pension { class Program { static void Main(string[] args) { string fråga1 = "Vad är ditt för- och efternamn? "; //använder variabeltypen string för att ställa fråga 1 Console.Write(fråga1); //frågan skrivs ut i konsolfönstret fråga1 = Console.ReadLine(); //personen skriver in sitt svar och datan läses/sparas i fråga1 string fråga2 = "Hur gammal är du? "; Console.Write(fråga2); fråga2 = Console.ReadLine(); int nr = Convert.ToInt32(fråga2); //konverterar datan i fråga2 från string till int, eftersom en string endast innehåller tecken och ej siffror nr = 65 - nr; //räknar ut år kvar till pension, nr får ett nytt värde if (nr > 33) //om värdet av nr är större än 33 skrivs denna text ut { Console.WriteLine("Hej " + fråga1 + "! Du har " + nr + " år kvar till din pension, om du pensionerar dig när du är 65 år gammal. Det är väldigt många år kvar dit!"); } else if (nr == 33) //om värdet av nr är exakt 33 (median av 65) skrivs denna text ut { Console.WriteLine("Hej " + fråga1 + "! Du har " + nr + " år kvar till din pension, om du pensionerar dig när du är 65 år gammal. Du är halvvägs dit!"); } else if (nr < 33) //om värdet av nr är mindre än 33 skrivs denna text ut { Console.WriteLine("Hej " + fråga1 + "! Du har " + nr + " år kvar till din pension, om du pensionerar dig när du är 65 år gammal. Du har mindre än hälften kvar dit!"); } } } }

Permalänk
Medlem

använd kodblock tack när du skriver kod i orumet.

Consollen kanske försvinner för att printen i if-satsen är det sista som händer och den kan anse sig vara klar och avslutar programmet.

Permalänk
Hedersmedlem

Koden ser bra ut vad jag kan se, men att fönstret försvinner beror på att programmet har körts färdigt.
Du bör kunna lägga till något i still med:

Console.WriteLine("Tryck enter för att avsluta."); Console.ReadLine();

Alternativt kan du starta programmet i en kommandotolk eller Powershell som då stannar kvar.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk

Kopierade in koden i https://replit.com/languages/csharp och den verkar fungera som den ska.

Som övriga har sagt så försvinner konsolfönstret eftersom programmet har kört klart och du hinner förmodligen inte se utskriften

Permalänk
Medlem

Jag minns när jag var ny inom programmering hur svårt det var att hitta lösningar på saker som idag är triviala grejer. Vill bara komma med ett tips.
I detta fallet så har du i din beskrivning skrivit att konsolfönstret försvinner. Det är ju egentligen vad som är ditt problem. Så att göra en googling på visual studio console window closes genererar lite träffar kring det problemet.

Att formulera googlingar är nog nästan den svåraste biten i början, men det kommer med tiden!

Lycka till med kodandet!!

Permalänk
Medlem

Avsluta med en Console.Readkey(); så stängs det inte direkt.
Eftersom det som folk säger har körts klart så behöver programmet vänta på input med detta innan det är klart.

Permalänk
Medlem

Och för att förtydliga nu när både ReadKey() och ReadLine() har nämnts så är skillnaden att ReadKey triggas av vilken tangent som helst, medans ReadLine väntar på ett tryck på enter.

Permalänk

Tusen tack för alla svar, nu är det fixat med konsolfönstret! Sorry att jag inte la in koden korrekt i min post, är så ny på det här..

Permalänk
Medlem

Eller lägg allt i en loop, så startas det om från början när det är klart.

När jag studerade programmering så brukade jag köra mina program inuti en loop. Som bara stängdes av när man valde att stänga av det. Annars startade det om från början.

Precis som alla spel osv fungerar idag.

Programmet stängs inte av förens man avslutar det via en knapp.

Visa signatur

[IT-Dept]
Ryzen 1700 OC - 32 - 1070