Som sagt t.ex. chat gpt löser detta
Det finns flera problem i din C#-kod som kan orsaka fel. Jag går igenom dem steg för steg:
1. Felaktig användning av semikolon i if-satsen
if (sum > 46);
Console.WriteLine(answer);
Problem:
Här har du ett semikolon (;) direkt efter if (sum > 46), vilket gör att villkoret blir meningslöst. Det betyder att Console.WriteLine(answer); alltid kommer att köras, oavsett om sum > 46 eller inte.
Lösning: Ta bort semikolonet efter if-satsen:
if (sum > 46)
{
Console.WriteLine(answer);
}
---
2. Ofullständig inmatning av num1
int num1 = int.Parse(Console.ReadLine());
Problem:
num1 är tänkt att vara användarens ålder, men den inläsningen sker efter att ålder redan har lästs in tidigare. Dessutom används ålder aldrig.
Lösning:
Ersätt num1 med ålder:
int sum = num2 - ålder;
---
3. Felmeddelande vid felaktig inmatning av ålder
Om användaren skriver något som inte är ett heltal (t.ex. "tjugo"), kraschar programmet.
Lösning:
Använd int.TryParse() för att säkerställa att inmatningen är en giltig siffra:
Console.WriteLine("Hur gammal är du?");
string ålderText = Console.ReadLine();
bool lyckadKonvertering = int.TryParse(ålderText, out int ålder);
if (!lyckadKonvertering)
{
Console.WriteLine("Felaktig inmatning! Ange en siffra för ålder.");
return;
}
---
4. Felaktig strängkonkatenering
string answer = ("Hej" + name + "." + "Du går i pension om" + sum + "år.");
Problem:
Saknas mellanslag i strängen, vilket gör att meddelandet blir svårt att läsa.
Lösning:
string answer = $"Hej {name}. Du går i pension om {sum} år.";
Använd interpolerad sträng ($"...") för att göra koden tydligare och enklare att läsa.
---
5. Felhantering av negativa pensionsår
Om användaren anger en ålder som är större än 65 blir sum negativt. Det kan vara bra att hantera det fallet:
if (sum < 0)
{
Console.WriteLine($"Hej {name}. Du har redan passerat pensionsåldern med {-sum} år!");
}
else
{
Console.WriteLine(answer);
}
---
6. Saknad using System;
Kodexemplet använder Console.WriteLine(), men System-namnrymden inkluderas inte. Lägg till:
using System;
---
Fixad kod
Här är en förbättrad version av din kod som hanterar alla ovanstående problem:
using System;
internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine("Välkomna till denna pensionssimulator");
Console.ReadLine();
Console.WriteLine("Vad heter du i förnamn?");
string name = Console.ReadLine();
Console.WriteLine("Hur gammal är du?");
string ålderText = Console.ReadLine();
bool lyckadKonvertering = int.TryParse(ålderText, out int ålder);
if (!lyckadKonvertering)
{
Console.WriteLine("Felaktig inmatning! Ange en siffra för ålder.");
return;
}
int pensionsålder = 65;
int sum = pensionsålder - ålder;
if (sum < 0)
{
Console.WriteLine($"Hej {name}. Du har redan passerat pensionsåldern med {-sum} år!");
}
else
{
Console.WriteLine($"Hej {name}. Du går i pension om {sum} år.");
}
Console.ReadLine();
}
}
Förbättringar i den fixade koden:
✅ Tar bort onödiga semikolon i if-satsen.
✅ Byter ut num1 mot ålder för bättre logik.
✅ Använder int.TryParse() för att undvika krascher vid felaktig inmatning.
✅ Hanterar fall där åldern är större än pensionsåldern.
✅ Förbättrar strängformattering med string interpolation.
✅ Lägger till using System; för att säkerställa att Console fungerar korrekt.
Testa den nya koden och se om den fungerar som du tänkt!