Beräkna BMI i C#. Fel när programmet körs
Här är första delen av uppgiften BMI och därefter har jag klistrat in det jag har kommit fram till än så länge. Det funkar bra när jag kör programmet förutom när användaren ska skriva in sin längd, exempelvis 1.63 Då blir det nån error men jag förstår inte hur jag ska lösa det.
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;
namespace HelloWorld{ internal class Program { static void Main(string[] args) { Console.WriteLine("Welcome. We will start off by calculating your BMI and then we will proceed to your BMR.");
Console.Write("Please enter your weight in kilograms:"); string strNr = Console.ReadLine(); strNr = strNr.Replace(',', '.'); double weight = Convert.ToDouble(strNr);
Console.Write("Please enter your height in meters:");
string strheight = Console.ReadLine(); strheight = strheight.Replace(',', '.'); double height = Convert.ToDouble(strheight);
Console.Write("Please enter your gender:"); string strgen = Console.ReadLine();
Console.Write("Please enter your age:"); string strage = Console.ReadLine(); int age = Convert.ToInt32(strage);
double BMI = 1.3 * weight / Math.Pow(height, 2.5);
Console.ReadLine(); } }}
Hej och välkommen. Använd {;}-knappen för att få snyggt formaterad kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HelloWorld
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Welcome. We will start off by calculating your BMI and then we will proceed to your BMR.");
Console.Write("Please enter your weight in kilograms:");
string strNr = Console.ReadLine();
strNr = strNr.Replace(',', '.');
double weight = Convert.ToDouble(strNr);
Console.Write("Please enter your height in meters:");
string strheight = Console.ReadLine();
strheight = strheight.Replace(',', '.');
double height = Convert.ToDouble(strheight);
Console.Write("Please enter your gender:");
string strgen = Console.ReadLine();
Console.Write("Please enter your age:");
string strage = Console.ReadLine();
int age = Convert.ToInt32(strage);
double BMI = 1.3 * weight / Math.Pow(height, 2.5);
Console.ReadLine();
}
}
}
Jag kommer titta på den nu.
Edit: Jag får inget fel när jag kör den. Vad står det för dig?
Det blir bara ett fel om en användare skriver in decimaler i vikt och längd. Exempelvis i vikt 50,4 och längd 1,63. Det blir fel oavsett om decimaltecknet är en komma eller en punkt. Det verkar som att felet inträffar vid double weight och double height raden. Det står då att indatasträngen hade ett felaktigt format.
Men om man skriver in heltal så funkar allt bra.
Välkommen till PluggAkuten och till den komplicerade verkligheten som rör hantering av tal.
I Sverige använder vi decimalkomma, medan man i exempelvis USA använder decimalpunkt.
De där raderna med Replace() försöker på något sätt ta höjd för det, men på fel sätt.
Convert.ToDouble() konverterar en sträng till en double och tar höjd för vilka landsinställningar din dator har. Om de är satta till Sverige, med svenska decimaltecken, så förväntar sig funktionen ett decimalkomma. Då får du följande exception om du skickar in något med decimalpunkt:
Unhandled exception. System.FormatException: The input string '42.3' was not in a correct format.
at System.Number.ThrowFormatException[TChar](ReadOnlySpan`1 value)
Det hade förresten varit hjälpsamt om du postat det fel du fick istället för "nån error", men i detta fall var det ju ändå rätt lätt att lista ut vad som gick fel.
Ta bort din Replace() som byter komma till punkt, så skall det nog fungera fint. Eller så kör du din kod på en dator som är inställd på exempelvis USA.
Tusen tack! Nu gick det =)
Nu när jag försöker köra programmet står det: please select a valid startup item. Hur gör jag det? Har googlat lösningen men det verkar inte funka
Hjälpmedplugget skrev:Nu när jag försöker köra programmet står det: please select a valid startup item. Hur gör jag det? Har googlat lösningen men det verkar inte funka
Har du bytt namn på klassen Program eller metoden Main?
Nä har inte ändrat något.
Du har en drop-down i verktygsfältet där det står "Select Startup Item...". Kan du välja något där?
Stängde ner och öppnade den igen och nu står det något annat men det går fortfarande inte att köra programmet.
Och såhär ser det ut när jag klickar på drop down:
oavsett vad jag klickar på i drop down så får är det inget som funkar, får bara upp build failed om och om igen
Ja, du har väldigt många felmeddelanden längst ned.
Hur ser din kod ut nu?
I fliken "Error List" (nere till vänster) får du en lista över allt den inte gillar när den skall bygga. Kika i den också.
försökte skriva en switch sats längst ner så det var nog den som orsakade en massa errors men jag tog bort den och nu har jag denna kvar. dock så har jag ingen aning vad den vill att jag ska ändra på. jag kan inget om namespaces
Så här såg ditt program ut tidigare. Notera skillnaden mot det du postade nyss:
tack så hemskt mycket!
Har inte lyckats klura ut hur jag ska lösa det här.
Posta hela din kod, formaterad som kod, som thedifference gjorde i svar #2 ovan. Det är jättesvårt att debugga skärmdumpar.
Löste precis felen, behövde bara ta bort lite "{". Tack ändå