Hjälp! Programmering 1 c# Avrundaren

Trädvy Permalänk
Medlem
Registrerad
Feb 2018

Hjälp! Programmering 1 c# Avrundaren

Har fastnat på en uppgift och vet inte riktigt vad som är fel. Uppgiften är:

Uppgiften går ut på att du ska be användaren skriva in ett tal med decimaler.
Därefter ska ni be användaren skriva in hur många decimaler användaren vill ha.
Din kod ska avrunda talet enligt ovan, men också med ett på förbestämt antal decimaler (exempelvis tre).
Exempel:
Användaren skriver in talet 1,3457322 och 5 för antal decimaler. Talet redovisas dels med så många decimaler som användaren valt (1,34573), samt även med tre decimaler (1,346).

Det jag har kommit fram till är:

{ class Program { public static void Main(string[] args) { string nr; double nr1; int dec1; string dec; Console.WriteLine("Välj ett nummer med decimaler."); Console.ReadKey(); nr = Console.ReadLine(); nr1 = double.Parse(nr); Console.WriteLine("Hur många decimaler vill du ha?"); dec = Console.ReadLine(); dec1 = int.Parse(dec); Console.Write("Då avrundar vi det till:"); Console.WriteLine(Math.Round( nr1 , dec1 )); Console.ReadKey();

Problemet är att första siffran i heltalet försvinner i utskriften.
Jag misstänker att det är nr1 = double.Parse(nr); som är fel.. Men vad ska vara där istället?

Trädvy Permalänk
Medlem
Plats
Örebro
Registrerad
Okt 2001

Du missatänker? Kör debug och se vart det blir fel så kan du ta det vidare därifrån!

Använd gärna också [ code] [/ code] så blir det lättare att läsa (utan mellanslag då).

using System; class Program { static void Main(string[] args) { Console.WriteLine("Hello, world!"); } }

Trädvy Permalänk
Medlem
Registrerad
Feb 2018

@GonAce: Problemet är att första siffran i heltalet försvinner i utskriften. Kom på att jag inte skrev det..

Trädvy Permalänk
Medlem
Plats
Örebro
Registrerad
Okt 2001

@Amurcute: Kan du om du kör debugging se om Console.ReadLine(); avspeglar det man skriver in? Jag skulle gissa att det blir fel när användaren skriver in sitt värde och att det beror på att ReadKey(); skapar problem.

Trädvy Permalänk
Medlem
Registrerad
Apr 2002
Skrivet av Amurcute:

@GonAce: Problemet är att första siffran i heltalet försvinner i utskriften. Kom på att jag inte skrev det..

Varför Console.ReadKey();?
Känns som att det bör vara där din första siffra hamnat? (Dvs inte alls vid utskriften utan vid inläsningen. Som tidigare föreslagits, debugga.)

Intel i7 6850k || Asus X99-A II || Evga GTX 1080Ti || Kingston HyperX Fury 2666 64GB || Samsung 950 Pro 512GB || XB270HU 1440p IPS G-Sync

Trädvy Permalänk
Medlem
Plats
Örebro
Registrerad
Okt 2001

@Amurcute: Titta på svaret ifrån @evil penguin det var lite mer pedagogiskt än mitt

Trädvy Permalänk
Medlem
Registrerad
Feb 2018

Tusen tack! Det var precis det som var problemet! Har suttit med det här i dagar...

Trädvy Permalänk
Medlem
Registrerad
Apr 2002
Skrivet av Amurcute:

Tusen tack! Det var precis det som var problemet! Har suttit med det här i dagar...

Som sagt, använd debugger. Blir jättetydligt då vad som händer i varje steg.

Intel i7 6850k || Asus X99-A II || Evga GTX 1080Ti || Kingston HyperX Fury 2666 64GB || Samsung 950 Pro 512GB || XB270HU 1440p IPS G-Sync

Trädvy Permalänk
Medlem
Registrerad
Dec 2018

@Amurcute:

Koden funkar utan problem när jag kör den med Console.ReadKey();
Tvärtom så försvinner konsolen när jag tar bort Console.ReadKey();

Trädvy Permalänk
Medlem
Registrerad
Feb 2019

@Amurcute: Hej. Har du löst uppgiften?

Trädvy Permalänk
Medlem
Registrerad
Feb 2019

@Amurcute: Hur kunde du? Vad har du gjort?

Trädvy Permalänk
Medlem
Registrerad
Dec 2018

@Hitman08:

string num; double num1; int decimaltal1; string decimaltal; Console.WriteLine("Välj ett nummer med decimaler."); num = Console.ReadLine(); num1 = double.Parse(num); Console.WriteLine("Hur många decimaler vill du ha?"); decimaltal = Console.ReadLine(); decimaltal1 = int.Parse(decimaltal); Console.Write("Då avrundar vi det till:"); Console.WriteLine(Math.Round(num1, decimaltal1)); Console.ReadKey();

Trädvy Permalänk
Medlem
Registrerad
Feb 2019
Skrivet av Karrar_90:

@Hitman08:

string num; double num1; int decimaltal1; string decimaltal; Console.WriteLine("Välj ett nummer med decimaler."); num = Console.ReadLine(); num1 = double.Parse(num); Console.WriteLine("Hur många decimaler vill du ha?"); decimaltal = Console.ReadLine(); decimaltal1 = int.Parse(decimaltal); Console.Write("Då avrundar vi det till:"); Console.WriteLine(Math.Round(num1, decimaltal1)); Console.ReadKey();

Tack för svaret. Jag har precis löst den i natt. Problemet var mellan punkt och komma teckena. )

Skickades från m.sweclockers.com