Programmering C# variabler, if+else

Trädvy Permalänk
Medlem
Registrerad
Jun 2013

Programmering C# variabler, if+else

Tjena!
Jag skulle behöva hjälp med att skriva ett program. Programmet ska fråga om användarens för-och efternamn. Sen fråga om ålder. Värdena ska lagras i lämpliga variabler. Därefter ska det skrivas ut hur många år det är kvar till ex 90. Så om användarens skriver in åldern 45 ska det stå 45 år kvar, jaa ni fattar.

Skulle även behöva använda if och else. Med olika kommentarer om hur lång(väldigt lång tid, lång tid, kort tid och väldigt kort) tid det är till ex 90 år.

Har bara lärt mig basic stuff än och har fått fram det här hittills;

Console.Write("Mata in ditt förnamn: "); string namn = Console.ReadLine(); Console.Write("Mata in ditt efternamn: "); string efternamn = Console.ReadLine(); string fras = "Hej " + namn + " " + efternamn;

Trädvy Permalänk
Webbutvecklare
Moderator
Plats
::1
Registrerad
Dec 2002

@mrrrt: Vad har du fastnat på?

Abstractions all the way down.

Trädvy Permalänk
Medlem
Plats
Borlänge
Registrerad
Jun 2012

För den sistnämnda delen kan du ju ta procenten det är kvar till personen blir x antal år, och använder if där. typ

if (procent < 0.33) { // långt kvar } else if (procent >= 0.33 && procent < 0.66) { // halv vägs }

etc etc

Corsair 750D | i5 4670k | ASUS Z87-a | 8GB Corsair Dominator | Asus GTX770-DC2OC | Samsung 840 EVO 250GB | WD 500GB X2

Trädvy Permalänk
Medlem
Registrerad
Jun 2013

@Tunnelsork
Det är ett nytt ämne för mig och en del att ta in att lära sig och komma ihåg. Skulle behöva få hjälp med hur jag bygger vidare. Har fått fram namndelen okej men vet inte hur jag ska lägga upp ålder och antal år till 90 delen bra? Antar att jag ska använda mig av olika operatör för att styra och på nått sätt få med if och else. Men har liksom fastnat där...

@reflect

Tack ska provas!

Trädvy Permalänk
Medlem
Plats
Falun
Registrerad
Dec 2003

Lämpligtvis hämtar du åldern från användaren på samma sätt som du har gjort med för- och efternamn. Däremot är datat från Console.ReadLine() alltid en sträng och det går inte att utföra matematiska uträkningar med strängar.
Det du behöver göra är att göra om åldersträngen till ett heltal. Detta kan du göra med int.Parse(åldersträngen)

ηλί, ηλί, λαμά σαβαχθανί!?

Trädvy Permalänk
Webbutvecklare
Moderator
Plats
::1
Registrerad
Dec 2002
Skrivet av mrrrt:

@Tunnelsork: Det är ett nytt ämne för mig och en del att ta in att lära sig och komma ihåg. Skulle behöva få hjälp med hur jag bygger vidare.

Det är mycket att ta in, men det blir lättare att resonera kring problemet om du kan dela upp det i mindre delar och identifiera vad det är du har fastnat på, och sedan antingen frågar efter hjälp om eller söker specifikt på det. I det här fallet kanske det gäller att läsa in en ålder? Hur arbetar man med heltal? Hur konverterar man texten från kommandoraden till sådana? Det finns många potentiella frågor. Försök börja med att separera vad som ska göras från hur det ska göras.

Skrivet av mrrrt:

Har fått fram namndelen okej men vet inte hur jag ska lägga upp ålder och antal år till 90 delen bra? Antar att jag ska använda mig av olika operatör för att styra och på nått sätt få med if och else. Men har liksom fastnat där...

Skillnaden mot namnen är att du inte längre bara kan läsa in ett godtyckligt stycke text från användaren, istället måste du kontrollera om det går att behandla som ett heltal (för att kunna jämföra det mot siffran 90), om det är inom ett rimligt intervall, och bestämma hur du vill hantera felaktig data.

Efter att ha kommit fram till det blir alltså nästa fråga: Hur konverterar man text till heltal i C#? Ett alternativ är att använda int.Parse(), men om det misslyckas (användaren kanske fyllde i något annat) kommer det orsaka ett fel som måste hanteras. En annan lösning är int.TryParse(), den funktionen returnerar istället sant/falskt beroende på hur det gick:

using System; namespace Example { class Program { static void Main(string[] args) { int age; if (int.TryParse(Console.ReadLine(), out age)) { Console.WriteLine("Vi har ett heltal."); Console.WriteLine("Nu kan vi börja kontrollera om det är rimligt och jämföra det mot 90."); Console.WriteLine(); if (age < 0) { Console.WriteLine("Det här är antagligen inte bra..."); } else if (age > 90) { Console.WriteLine("Gå mot ljuset!"); } else { Console.WriteLine("Hur lång tid har jag egentligen för att lära mig det här?"); } } else { Console.WriteLine("Oj då. Vad ska vi göra nu?"); } } } }

Exempel

Abstractions all the way down.