# BMI ausrechnen



## kannkeinjava (29. Jul 2009)

```
class Bmi
{
	public static void main (String args[])
	{
		System.out.println("Wir berechnen den Bmi aus");
		double Gewicht;
		double Dgewicht;
		double Gr;
		double BMI;
		System.out.println("Bitte geben sie Gewicht ein");
		Gewicht=IO1.eindouble();/*Einlesne einer Zahl*/
		System.out.println("Bitte geben sie Größe ein");
		Gr=IO1.eindouble();
		System.out.println("Ihre ");
		Dgewicht=Gewicht*Gewicht;
			System.out.println("Ihr BMI Wert lautet:"+BMI);
			BMI=Gr/Dgewicht;
		
	}
}
```

Könntet ihr mir da helfen

Also mein Problem ist ich weiß nciht warum er für BMI eine Zahl nicht ausgibt???


----------



## bygones (29. Jul 2009)

du gibst die variable BMI aus bevor du sie berechnest...


----------



## Noctarius (29. Jul 2009)

Ich hab den Code mal in schön-mach-tags gesetzt


----------



## kaper28 (29. Jul 2009)

```
// Body Mass-GUI-Programm 
import java.awt.*;
import java.awt.event.*;


public class BodyMassGUI extends Frame
{
  Label     l_groesse, l_gewicht;
  TextField t_groesse, t_gewicht;
  Button    b_abschicken;
  TextArea  t_ausgabe;
  
//um den fenster zu schließen
	class MeinWindowLauscher extends WindowAdapter
	  {
		// Schließen das F	enster mit  x button 
	    public void windowClosing(WindowEvent e)
	    {
	       System.exit(0);
	    }
	  }

  class Lauscher implements ActionListener
  {
    public void actionPerformed(ActionEvent e)
    {
      String titel;
      String tmp;
      double groesse, gewicht, index;

      titel = e.getActionCommand();

      if (titel.equals("Body-Mass-Index berechnen"))
      {
         tmp = t_groesse.getText();
         groesse = Double.parseDouble(tmp);
         tmp = t_gewicht.getText();
         gewicht = Double.parseDouble(tmp);
        
         index = gewicht/(groesse/100*groesse/100);

         t_ausgabe.setText(
          "Sie haben einen Body-Mass-Index von:\n\n");

         t_ausgabe.append(String.valueOf(index));

         if(index < 20)
           t_ausgabe.append(
                  "\n\n\nSie sind untergewichtig!");
           else if (index >= 25)
              t_ausgabe.append(
                   "\n\n\nSie sind übergewichtig!");
           else 
              t_ausgabe.append(
                    "\n\n\nSie haben Normalgewicht!");
         System.out.println(titel);
      
      }
    }
  }



  BodyMassGUI(String titel)
  {
    super(titel);

    l_groesse = new Label(
      "  Geben Sie Ihre Körpergrösse in cm an :");
    t_groesse = new TextField(5);

    l_gewicht = new Label(
      "  Geben Sie Ihr Gewicht in kg an           :");
    t_gewicht = new TextField(5);

    b_abschicken = 
      new Button("Body-Mass-Index berechnen");

    t_ausgabe = new TextArea(10, 40);

    setLayout(new FlowLayout(FlowLayout.LEFT));

    add(l_groesse);
    add(t_groesse);
    add(l_gewicht);
    add(t_gewicht);
    add(b_abschicken);
    add(t_ausgabe);

    b_abschicken.addActionListener(new Lauscher());
    addWindowListener(new MeinWindowLauscher());
  }

  public static void main(String[] args)
  {
    BodyMassGUI fenster = 
               new BodyMassGUI("Body-Mass-Index");

    fenster.pack();
    fenster.setSize(400, 320);
    fenster.setVisible(true);   
   
  }
}
```

Hier eine andere Version von BMI Rechner , prenzip ist aber gleich


----------



## kannkeinjava (10. Aug 2009)

Danke nur wie kann ich z.b. eine Anweisung machen 

Mäßiges Untergewicht 	16 – 17

also zwischen 16 bis 17


----------



## Painii (10. Aug 2009)

```
switch(index){
 case 16:
 case 17:
  System.out.println("Wert 16 oder 17");
  break; 
 case 18:
 case 19:
  System.out.println("Wert 18 oder 19");
  break; 
}
```
das switch geht dann an die Stelle wo index==der Zahl ist, und läuft von da ab den code ab bis zum ersten break das es findet (wenn also index==16 ist fällt es einfach weiter bis zur 17 wo dann das break steht).

Die Zahlen in den code zu packen macht hier Sinn weil sich die BMI-werte ja normal nicht ändern, normalerweise halt variablen.


----------



## kannkeinjava (20. Aug 2009)

danke


----------



## ARadauer (20. Aug 2009)

Painii hat gesagt.:


> ```
> switch(index){
> case 16:
> case 17:
> ...




funktioniert das auch beim 18,5? index ist ein double wert...


----------



## ARadauer (20. Aug 2009)

wenn kleiner 16
  balbal
sonst wenn kleiner 17 
balblab
sonst wenn kleiner 20
usw...


```
double index = 17.5;
	if(index < 16){
		System.out.println("mager");
	}else if(index < 18){
		System.out.println("bast scho");
	}else if(index <  22){
		System.out.println("fett");
	}else{
		System.out.println("gscheid fett");
	}
```


----------



## bygones (20. Aug 2009)

wer braucht schon nen double BMI...

wer glaubt ueberhaupt dem BMI ?


----------



## ARadauer (20. Aug 2009)

bygones hat gesagt.:


> wer braucht schon nen double BMI...
> 
> wer glaubt ueberhaupt dem BMI ?



Informatik Lehrer ;-)


----------



## Wolfgang Lenhard (20. Aug 2009)

Painii hat gesagt.:


> ```
> switch(index){
> case 16:
> case 17:
> ...



Doch, tun sie. Die Bewertung, was unter und übergewichtig ist hängt vom Lebensalter ab. BMI 20 ist etwas völlig unterschiedliches, je nachdem ob man ein Kind oder einen 60jährigen vor sich hat, und ob das Geschlecht männlich oder weiblich ist. 16 bis 17 im jungen Erwachsenenalter ist beispielsweise bereits ein Kriterium zur Diagnose einer Annorexia Nervosa, unter 16 bedeutet "Ab in die Klinik". Weitere Infos gibts beispielsweise unter Body mass index - Wikipedia, the free encyclopedia und http://whqlibdoc.who.int/trs/WHO_TRS_854.pdf. Und ob der BMI so sinnvoll ist, oder eher andere Maße wie z. b. der Körperfettanteil sei ohnehin dahin gestellt.


----------



## bygones (20. Aug 2009)

Wolfgang Lenhard hat gesagt.:


> Doch, tun sie. Die Bewertung, was unter und übergewichtig ist hängt vom Lebensalter ab. BMI 20 ist etwas völlig unterschiedliches, je nachdem ob man ein Kind oder einen 60jährigen vor sich hat. 16 bis 17 im jungen Erwachsenenalter ist beispielsweise bereits ein Kriterium zur Diagnose einer Annorexia Nervosa, unter 16 bedeutet "Ab in die Klinik". Weitere Infos gibts beispielsweise unter Body mass index - Wikipedia, the free encyclopedia und http://whqlibdoc.who.int/trs/WHO_TRS_854.pdf.


BMI ist im Grunde ein unsinniges und meist absolut nix aussagendes Mass was die Realitaet nicht unbedingt wiederspiegeln kann - mehr net

bygones


----------



## ARadauer (20. Aug 2009)

bygones hat gesagt.:


> BMI ist im Grunde ein unsinniges und meist absolut nix aussagendes Mass was die Realitaet nicht unbedingt wiederspiegeln kann - mehr net
> 
> bygones


das sage ich auch... seit dem mein BMI über 22 geklettert ist ;-)


----------



## bygones (20. Aug 2009)

ARadauer hat gesagt.:


> das sage ich auch... seit dem mein BMI über 22 geklettert ist ;-)



du verlangst einfach zu viel bier fuer deine Taten


----------



## Landei (21. Aug 2009)

Für dreidimensionale Wesen (und unter der Annahme, dass die mittlere Dichte verschiedener Menschen ungefähr gleich ist) muss man natürlich auch die dritte Dimension in die Berechnung mit einbeziehen:
Ponderal-Index ? Wikipedia


----------



## Shulyn (21. Aug 2009)

Landei hat gesagt.:


> Für dreidimensionale Wesen (und unter der Annahme, dass die mittlere Dichte verschiedener Menschen ungefähr gleich ist) muss man natürlich auch die dritte Dimension in die Berechnung mit einbeziehen:
> Ponderal-Index ? Wikipedia



Hmm
h = 1,7m
m = 55kg

BMI =  19,03  (Normal 	from 18.5 to 22.9)
PM  =  11,19  (Werte zwischen 11 und 14 entsprechen dabei Normalgewichtigkeit.)

Hah doch noch Normalgewicht *puh*



> Kategorie 	BMI (kg/m²)
> Starkes Untergewicht 	< 16
> Mäßiges Untergewicht 	16 – 17
> Leichtes Untergewicht 	17 – 18,5
> ...




```
package dein.packet;

import java.util.Scanner;

public class BMI {

        public static void main (String args[])
        {
            double kilogramm;
            double meter;
            double bodymassindex;
            String zuteilung = "";
            Scanner eingabe = new Scanner(System.in);
            System.out.println("-------B-M-I-------");
            System.out.println("-b-e-r-e-c-h-n-u-g-");
            System.out.println("/n");
            System.out.println("/n");
            System.out.println("/n");
            System.out.println("Bitte geben Sie ihr Gewicht in KG ein :");
            kilogramm = eingabe.nextDouble();
            
            System.out.println("/n");
            System.out.println("Bitte geben Sie ihre Größe in M ein :");
            
            meter = eingabe.nextDouble();
            
            System.out.println("/n");
            
            bodymassindex = meter/Math.pow(kilogramm, 2);
            
            System.out.println("Ihr Body Mass Index ist :" +bodymassindex +"/n");
            
            if (bodymassindex < 16) {
                zuteilung = "Starkes Untergewicht";
            }
            else if (bodymassindex < 17) {
                zuteilung = "Mäßiges Untergewicht";
            }
            else if (bodymassindex < 18.5) {
                zuteilung = "Leichtes Untergewicht";
            }
            else if (bodymassindex < 25) {
                zuteilung = "Normalgewicht";
            }
            else if (bodymassindex < 30) {
                zuteilung = "Präadipositas";
            }
            else if (bodymassindex < 35) {
                zuteilung = "Adipositas Grad I";
            }
            else if (bodymassindex < 40) {
                zuteilung = "Adipositas Grad II";
            }
            else if (bodymassindex > 40) {
                zuteilung = "Adipositas Grad III";
            }
            System.out.println("Dies entspricht '" + zuteilung + "'");
        }
    }

// Ich denke es ist eine Schulaufgabe oder ähnliches, darum nur "einfacher" code
```


----------



## Landei (21. Aug 2009)

Deine Formel ist falsch herum, und Zeilenende ist "\n" und nicht "/n". 

Aber weil Freitag ist...

```
import java.util.Scanner;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;

public class BMI {
  
  private static Map<Double, String> BMIs = new TreeMap<Double, String>();
  
  static {
    BMIs.put(16.0, "Starkes Untergewicht");
    BMIs.put(17.0, "Mäßiges Untergewicht");
    BMIs.put(18.5, "Leichtes Untergewicht");
    BMIs.put(25.0, "Normalgewicht");
    BMIs.put(30.0, "Präadipositas");
    BMIs.put(35.0, "Adipositas Grad I");
    BMIs.put(40.0, "Adipositas Grad II");
    BMIs.put(Double.MAX_VALUE, "Adipositas Grad III");
  }
  

  public static void main(String args[]) {
    Scanner eingabe = new Scanner(System.in);
    System.out.println("-------B-M-I-------");
    System.out.println("-b-e-r-e-c-h-n-u-g-");
    System.out.println("\n\n\n");
    System.out.println("Bitte geben Sie ihr Gewicht in KG ein :");
    double kilogramm = eingabe.nextDouble();

    System.out.println();
    System.out.println("Bitte geben Sie ihre Größe in M ein :");
    double meter = eingabe.nextDouble();

    System.out.println();
    double bodymassindex = kilogramm / (meter*meter);

    System.out.println("Ihr Body Mass Index ist :" + bodymassindex + "\n");

    String zuteilung = "";
    for(Entry<Double,String> entry : BMIs.entrySet()) {
      if (bodymassindex < entry.getKey()) {
        zuteilung = entry.getValue();
        break;
      }  
    }
    System.out.println("Dies entspricht '" + zuteilung + "'");
  }
}
```


----------



## Hari (15. Feb 2010)

```
public class BmiProjekt
{
 
    int gewicht;
    double groesse;
    double BMI;
    double Differenz;
  
 
    
    void Bmi(double neugroesse, int neugewicht)
{
    gewicht=neugewicht;
    groesse=neugroesse;
    
      BMI =(gewicht/(groesse*groesse))*10000;
      
     
    }
        
    
    public void ausgeben()
    {
   System.out.println("############################################################################################################");
    System.out.println( "Sie wiegen " +gewicht+ "kg");
     System.out.println( " Ihre Größe beträgt. " +groesse+ " cm");
      System.out.println( " ihr Bmi beträgt : " + BMI+ " punkte");
  
    
    if(BMI < 20)
    {   Differenz  = (25*groesse*groesse/1000) - gewicht;                   
        System.out.println("Laut BMI haben Sie Untergewicht, essen sie mehr damit sie nicht noch dünner und schwächer werden!");
        System.out.println("Sie müssen " + Differenz + " BMI punkte zunehmen um ihr Idealgewicht zu erlangen");
        System.out.println("############################################################################################################");
        
    }   
            else
        {
            if (BMI < 26 )
                {   
                    System.out.println("Laut BMI haben Sie Normalgewicht, KLasse behalten sie ihr Gewicht!");
                    System.out.println("############################################################################################################");
                }
                else
                {
                if(BMI < 31)
                {       Differenz  = (25*groesse*groesse/1000) - gewicht* (-1);
                        System.out.println("Laut BMI haben Sie Übergewicht, tuhen sie was für ihre Figur!");
                        System.out.println("Sie müssen " + Differenz + " BMI punkte abnehmen um ihr Idealgewicht zu erlangen");
                        System.out.println("############################################################################################################");
                }
                else
                {
                   if(BMI >= 31)
                   {        Differenz  = (25*groesse*groesse/1000) - gewicht* (-1);
                            System.out.println("Laut BMI haben Sie Starkesübergewicht,sie sollten sich Sorgen machen um ihre Gesundheit!");
                            System.out.println("Sie müssen " + Differenz + " BMI punkte abnehmen um ihr Ideal gewicht zu erhalten");
                            System.out.println("############################################################################################################");
                        }
                            
                        
    }   
         }
              }
                   }
                       }
```

Könnt ihr mir vielleicht helfen ich verzweifel schon daran


----------



## ARadauer (15. Feb 2010)

ja?

Wie lautet deine Frage? Wo ist dein Problem? Warum postest du in einen alten Thread?

statt

```
void Bmi(double neugroesse, int neugewicht)
```
machen wir das... Konstruktor muss so heißen wie die Klasse und hat keinen Rückgabe wert...



```
public BmiProjekt(double neugroesse, int neugewicht){
```

und dann das ganze benutzen


```
public static void main(String[] args) {
      BmiProjekt bmi = new BmiProjekt(180d,100);
      bmi.ausgeben();
   }
```

funktioniert doch...


----------



## SlaterB (15. Feb 2010)

> Warum postest du in einen alten Thread?

passt doch perfekt in diesem Thread,
es gibt das Risiko solcher Antworten oder gar keiner Antworten da manche weniger in Threads mit vielen Antworten schauen (ich zumindest  )
aber ansonsten kann man eine derartige Aufgeräumtheit doch nur begrüßen

die Frage war übrigens im Titel:
> Kann mir einer helfen ich weiss nicht wie ich das mit dem alter hinbekommen soll

nicht grad detailliert, aber zumindest das Thema ungefähr klar (= alles zum Alter noch einbauen  )


----------

