Hét vraag- en antwoordplatform van Nederland

Waarom kan ik de lengte in deze c# code niet public maken?

Hallo,

Ik heb een programma wat het BMI van een vrouw en een man berekend. Voor een man en vrouw zijn verschillende knoppen, alleen deze gebruiken dezelfde methode. Hier is een link naar mijn volledige code: http://pastebin.com/VZH98Qjv

Of moet ik deze variabele eerder in het programma al uitlezen en deze meegeven in mijn methode?

Alvast erg bedankt!

Verwijderde gebruiker
10 jaar geleden
1.1K

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Het beste antwoord

Je moet die Lengte niet declareren binnen die BMI() functie, maar bovenaan (bijvoorbeeld net boven public Form1). Dan zou je hem public kunnen maken, maar dat hoeft niet eens, omdat je hem niet buiten je Form1 uitleest maar alleen erbinnen.

Toegevoegd na 17 minuten:
Je zou helemaal kunnen vermijden om er een variabele in je class van te maken door het zo op te lossen:

private void button_man_Click(object sender, EventArgs e)
{
BMI(20,25);
}

private void button_vrouw_Click(object sender, EventArgs e)
{
BMI(19,24);
}

public void BMI(int normalebmibegin, int normalebmieind)
{
double Gewicht = double.Parse(textBox_gewicht.Text);
double Lengte = double.Parse(textBox_lengte.Text) / 100;
double LengteKwadraat = Lengte * Lengte;
double BMI = (Gewicht / LengteKwadraat);
label_berekendebmi.Text = BMI.ToString();

double Lengte = double.Parse(textBox_lengte.Text) * 10;
label_normalebmi.Text = normalebmibegin + " t/m " + normalebmieind;
double gezondgewichtbegin = Lengte / normalebmibegin;
double gezondgewichteind = Lengte / normalebmieind;
label_gezondgewicht.Text = gezondgewichteind + " t/m " + gezondgewichtbegin;
}
(Lees meer...)
gvrox
10 jaar geleden
Verwijderde gebruiker
10 jaar geleden
Hartstikke bedankt, ik heb echter nog een vraagje. Het antwoord wat in de labels komt te staan is ongeveer 7 cijfers achter de comma. Hoe kan dit ook al is het datatype een double? dan zou hij toch moeten afronden naar twee getallen achter de comma?
gvrox
10 jaar geleden
Double heeft niets met 2 cijfers achter de komma te maken, het gaat om de precisie van het getal: http://en.wikipedia.org/wiki/Double_precision Gebruik String.Format() om 2 decimalen te krijgen: http://www.csharp-examples.net/string-format-double/
Verwijderde gebruiker
10 jaar geleden
Bedankt! Je bent een held :P

Andere antwoorden (1)

Je kan in je class het volgende zetten:
private double Lengte;
Lengte kan je dan overal opvragen in je class en/of de waarde van Lengte zetten.
(Lees meer...)
Jaspro101
10 jaar geleden
Verwijderde gebruiker
10 jaar geleden
Ja dat werkt wel, dat scheelt inderdaad wat code echter waarom kan ik geen public zetten voor de double Lengte in de BMI() methode?
Jaspro101
10 jaar geleden
Daar kan ik je helaas geen antwoord op geven, ik weet alleen dat het niet kan.
Verwijderde gebruiker
10 jaar geleden
Variabelen aangemaakt in een methode bestaan alleen zolang de methode uitgevoerd wordt. Daarna bestaat die variabele dus niet meer. Public ervoor zetten is dus zinloos en daarom mag/kan het niet.
Verwijderde gebruiker
10 jaar geleden
@jordy
Bedankt voor je heldere uitleg, nu snap ik het.

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 5000
Gekozen afbeelding