# Bmi rechner programmieren



## corimonster (12. Jun 2010)

Hallo,
Wir sollen in der Schule einen BMI-Rechner mit Java Programmieren. Leider Sind wir beide totale Nieten darin und obwohl wir es wirklich versucht haben, will es uns nicht so recht gelingen.
Bisher haeb wir folgendes:


```
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Aufgabe5 extends Applet {
//      Variablen für das Layout
    Label lb_E = new Label();
    Label lb_F = new Label();
    Label lb_V = new Label();
    Label lb_A = new Label();
    Label lb_I = new Label();
    Button bu_start = new Button();
    TextField tf_ein = new TextField();
    TextField tf_ein1 = new TextField();
    TextField tf_aus = new TextField();
    TextField tf_aus1 = new TextField();
/*---------------------------------------------------------------------
        Start des Applets über die Methode init()
        ----------------------------------------------------------------------*/
    public void init () {

        setLayout(null);
        setSize(400,400);
        setBackground(Color.yellow);

        // Anordnung der Komponenten: Labels, Textfelder, Buttons

        lb_E.setText("Gewicht");
        lb_E.setBounds(50,100,100,25);
        lb_E.setFont(new Font("Old English Text MT", 1, 18));
        lb_E.setForeground(Color.blue);
        add(lb_E);

        lb_F.setText("Größe");
        lb_F.setBounds(50,150,100,25);
        lb_F.setFont(new Font("Old English Text MT", 1, 18));
        lb_F.setForeground(Color.blue);
        add(lb_F);
        
        lb_V.setText("berechnen");
        lb_V.setBounds(50,200,100,25);
        lb_V.setFont(new Font("Old English Text MT", 1, 18));
        lb_V.setForeground(Color.blue);
        add(lb_V);

        lb_A.setText("ihr BMI");
        lb_A.setBounds(50,300,100,25);
        lb_A.setFont(new Font("Old English Text MT", 1, 18));
        lb_A.setForeground(Color.blue);
        add(lb_A);

        lb_I.setText("Bemerkung");
        lb_I.setBounds(50,400,150,25);
        lb_I.setFont(new Font("Old English Text MT", 1, 18));
        lb_I.setForeground(Color.blue);
        add(lb_I);
        
        tf_ein.setBounds(200, 100, 200, 21);
        tf_ein.setText("Gewicht");
        add(tf_ein);

        tf_ein1.setBounds(200, 150, 200, 21);
        tf_ein1.setText("Größe");
        add(tf_ein1);
        
        tf_aus.setBounds(200, 300, 200, 21);
        tf_aus.setText("");
        add(tf_aus);

        tf_aus1.setBounds(200, 400, 200, 21);
        tf_aus1.setText("");
        add(tf_aus1);

        bu_start.setLabel("START");
        bu_start.setBounds(200,200,50,20);
        add(bu_start);

        // Actionlistener an den Button anhängen

        bu_start.addActionListener (new ActionListener () {
        public void actionPerformed (ActionEvent evt) {
        bu_startActionPerformed (evt);}});

        }
        /*---------------------------------------------------------------------
           Programmierung der Buttons = Methoden
           -------------------------------------------------------------------*/

        //  Programmierung für den Button START
    public void bu_startActionPerformed (ActionEvent evt) {
        System.out.println(tf_ein.getText());
        tf_aus.setText(tf_ein.getText());
        }
}
```

Wie ihr seht, haben wir lediglich die EIngabefelder, den Button und das Ausgabefeld hinbekommen. WIe sorgt man dafür, dass der BMI berechnet wird und das Ergebnis schließlich anzeigt? 
Des weiteren soll der Rechner angeben, ob die Person Unter-, Normal- oder Übergewicht hat (dafür hatten wir dieses Textfeld "Bemerkung" eingefügt.). Wie gelingt dies? Und könnte man das ganze eventuell auch etwas eleganter lösen? 
Wir wären wirklich unglaublich dankbar für Hilfe.

Mit freundlichen Grüßen, Corimonster


----------



## eRaaaa (12. Jun 2010)

Und wobei habt ihr jetzt genau Probleme? Bei der Mathematik ? 
Also ich meine, ihr habt doch schon einiges..

```
public void bu_startActionPerformed (ActionEvent evt) {
        System.out.println(tf_ein.getText());
        tf_aus.setText(tf_ein.getText());
        }
```

dort könntet ihr jetzt die Berechnung machen.
Mit Integer.parseInt(tf_ein.getText()); könnt ihr auch die Zahl aus dem Textfeld holen und damit rechnen. Mit setText() könnt ihr dann das Ergebnis setzen..dann noch eine Fallunterscheidung für die Bemerkung (dazu hast du nichts genaues gesagt) also z.B if(result <17) //..untergewicht if(result<25 && result >18) //normalgewicht 

usw....ohne genaue Fragen, kann man schwer helfen


----------



## corimonster (12. Jun 2010)

Hallo,
danke für die schnelle Antwort. Das Problem ist, dass wir alles, was wir bisher haben aus dem Unterricht kennen. Die Rechnung ist auch klar... BMI= Gewicht / Größe²
Aber wie sage ich nun dem Programm, dass es den einen eingegebenen Wert durch den anderen zum Quadrat teilen soll? Und an welcher Stelle muss ich diesen Befehl geben?

Und zu der Bemerkung haben wir noch keine genauen Vorstellungen. wir wissen auch nicht, wie man dem Programm vorgibt, bei welchen Ergebnissen er was angeben soll?
:bahnhof:
lg cori


----------



## eRaaaa (12. Jun 2010)

corimonster hat gesagt.:


> Hallo,
> danke für die schnelle Antwort. Das Problem ist, dass wir alles, was wir bisher haben aus dem Unterricht kennen. Die Rechnung ist auch klar... BMI= Gewicht / Größe²
> Aber wie sage ich nun dem Programm, dass es den einen eingegebenen Wert durch den anderen zum Quadrat teilen soll? Und an welcher Stelle muss ich diesen Befehl geben?



Naja, habe ich doch eben schon alles beschrieben:

```
public void bu_startActionPerformed(ActionEvent evt) {
		double kilo = Double.parseDouble(tf_ein.getText());
		double meter = Double.parseDouble(tf_ein1.getText());
		double bmi = kilo / (meter * meter);
//TODO: bemerkung - fallunterscheidung
		tf_aus.setText(Double.toString(bmi));
	}
```



> Und zu der Bemerkung haben wir noch keine genauen Vorstellungen. wir wissen auch nicht, wie man dem Programm vorgibt, bei welchen Ergebnissen er was angeben soll?



auch das steht oben....
Eine Liste ab wann Normalgewicht herrscht usw. findest du hier : Body-Mass-Index ? Wikipedia
Dafür halt verschiedene Abfragen machen oder am Besten eine eigene Methode schreiben !

So richtig genau weiß ich immer noch nicht wo euer Problem ist und es klingt langsam nach erschleichen der Lösung(will euch aber hier nichts unterstellen  )


----------



## U2nt (12. Jun 2010)

Wenn der Button gedrückt wurde, also im actionPeformed vom Button, musst du erstmal die Eingegebenen Daten auslesen:


```
gewichtFeld.getText()
```
das liefert jedoch einen String, also in ein double konvertieren...

```
try {
    double gewicht = Double.parseDouble(gewichtFeld.getText());
} catch(NumberFormatException ex) {
    // Error message... (Wenn ein Buchstabe drin war...)
}
```

Dann die zwei Teile berechnen...

```
double bmi = gewicht / (groesse * groesse); // vlt geht da auchnoch was wie pow oder so...
```

Dann hastes.


----------



## corimonster (15. Jun 2010)

Hallo,
Ersteinmal vielen Dank für eure Hilfe!
Leider haben wir es immer noch nicht hinbekommen. Es mag sich für euch nach Erschleichen der Lösung anhören, da ihr uns sicherlich gute Tipps liefert und wir dennoch immerwieder nachfragen, aber es ist so, dass wir komplette Anfänger sind. Die Tipps, die ihr uns gebt, sind für uns leider nur verwirrend. An welche Stelle man die Zeilen schreibt, was man innerhalb der Zeilen ersetzt? Wir haben keine Ahnung.
Leider ist unsere Lehrerin der Meinung, wir sollen uns das Programmieren mit Java selbst beibringen oder Leute fragen, die sich auskennen. WIr haben soetwas noch nie gemacht. Bisher haben wir im Unterricht DInge gemacht wie: ein Kreis eines bestimmten Radius soll bei Klicken im Applet entstehen.

Etwas ganz anderes also. Wie man das Programm dazu bringt etwas zu berechnen? Wir haben keine AHnung!
MfG Corimonster


----------



## Gast2 (15. Jun 2010)

steht doch im Post über dir ???:L

Zeig mal deinen aktuellen Code und sag uns wo das Problem liegt.


----------



## Haave (15. Jun 2010)

corimonster hat gesagt.:


> Wie man das Programm dazu bringt etwas zu berechnen? Wir haben keine AHnung!


Das wurde doch sowohl von eRaaaa als auch von U2nt bereits gepostet…?


----------



## ARadauer (15. Jun 2010)

> Leider ist unsere *Lehrerin *der Meinung, wir sollen uns das Programmieren mit Java selbst beibringen oder Leute fragen, die sich auskennen


verstehe ;-)


----------



## Sosososo (15. Jun 2010)

Na da hat eure Lehrerin auch recht.
Man lernt nur wenn man selber macht und nicht von anderen machen lässt.
Es gibt auch viele Informationsquellen und Bücher für Java ... lesen lesen und lesen.


----------



## Haave (15. Jun 2010)

ARadauer hat gesagt.:


> verstehe ;-)


Traust Frauen in dieser Hinsicht nicht allzu viel Kompetenz zu, was? xD


----------



## agentone (15. Jun 2010)

> Traust Frauen in dieser Hinsicht nicht allzu viel Kompetenz zu, was? xD



Das wird langsam ziemlich frauenfeindlich und find ich überhaupt nicht gut.

Wir haben an der Schule 2 Informatiklehrerinnen und 4 Informatiklehrer und nur einen find ich ok. Von dem kann ich was lernen. Die anderen teilen irgendwelche Blätter aus, die man sich durchlesen soll, und von denen die meisten in der Klasse nur jedes 5. Wort verstehen. Ich kann einigermaßen OOP, aber nur weil ich ich es mir selbst beigebracht habe. Meine Klassenkameraden sind jetzt gerade so bei prozedural. (Oder noch weit entfernt davon.)

Das Fach Informatik in Deutschland ist eigentlich ziemlicher Schwachsinn. Es gibt zwar viele Informatik-Lehrer, aber die sind, vorallem die im Gymnasium, der Rest der richtigen Informatiker. Der Lehrplan ist chaotisch. (LaTeX, PHP, Delphi und SQL über das Jahr verteilt, aber ohne Zusammenhang oder irgendein Ziel) Und es gibt kein vernünftiges Lehrbuch.

Und deshalb sage ich: Es liegt nicht an den Lehrer*innen* !


----------



## Haave (15. Jun 2010)

@agentone:
Mit meinem Kommentar wollte ich ARadauer lediglich ein wenig aus der Reserve locken, um herauszufinden, ob er daraufhin eine konkretere Meinung zu diesem Thema äußern würde - ich selbst erlebe es oft genug, dass Mädchen und Frauen, die sich für Videospiele interessieren oder sich am Programmieren versuchen, von Männern belächelt und nicht ernst genommen werden. Es liegt mir fern, mich abfällig über sie zu äußern, und es tut mir leid, falls das so rüberkam.
(Jetzt wird es allerdings allmählich Off-topic…)


----------



## agentone (16. Jun 2010)

Um wieder zurück zum Thema zu kommen:
Ich hab aus Mitleid )) mal die Bemerkung für dich gemacht.


```
String bemerkung="Ungültiger BMI";
if(bmi>0){bemerkung="Starkes Untergewicht";}
if(bmi>16){bemerkung="Mäßiges Untergewicht";}
if(bmi>17){bemerkung="Leichtes Untergewicht";}
if(bmi>18.5){bemerkung="Normalgewicht";}
if(bmi>25){bemerkung="Präadipositas";}
if(bmi>30){bemerkung="Adipositas Grad I";}
if(bmi>35){bemerkung="Adipositas Grad II";}
if(bmi>40){bemerkung="Adipositas Grad III";}

tf_aus1.setText(bemerkung);
```

Nimm diesen Code anstatt von eRaaaas Kommentar "//TODO: bemerkung - fallunterscheidung"

Wenn du dann immer noch keinen Schimmer hast, was du jetzt machen sollst, dann lies dir die Beiträge so lange durch bis du es verstanden hast. Es wurde jetzt eigentlich alles gesagt.


----------



## GAs (18. Jun 2010)

Hallo!
Ich bin total verzweifelt...ich sitze schon seit 2 Wochen an einem BMI-Rechner. Die Vorgabe ist es diesen mit Buttons und Textfeldern zu schreiben...Aber bei mir kommt einfach nichts sinnvolles dabei heraus  Auch mein Lehrer geht davon aus, dass alle als Informatikgenie geboren werden  
Kann mir jemand helfen und sagen was auf jeden Fall falsch ist?Mein größtes Problem ist es, dass ich zwar zwei Eingabefelder angezeigt bekomme, diese aber weder beschriftet sind, noch kommt wenn ich auf den ebenfalls vorhandenen Button "LOS!" drücke irgendetwas raus. Irgendwie fehlt da wohl eine Verbindung...



```
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class BMI_Rechner extends Applet{
  Label lb=new Label();
  Button bu_los=new Button();
  TextField tf_groesse= new TextField();
  TextField tf_gewicht= new TextField();
  TextField tf_bmiwert= new TextField();
  TextField tf_gesundheit= new TextField();
  
  double gewicht;
  double groesse;
  double bmi;
  
  public void init(){
    setLayout(null);
    setSize(500,500);
    setBackground(Color.yellow);
    
    lb.setText("BMI-Rechner");
    lb.setBounds(50,20,300,25);
    lb.setFont(new Font("Arial",1,18));
    lb.setForeground(Color.blue);
    add(lb);
    
    tf_groesse.setBounds(150,50,50,21);
    tf_groesse.setText("0");
    add(tf_groesse);
    
    tf_gewicht.setBounds(300,70,90,30);
    tf_groesse.setText("0");
    add(tf_groesse);
    
    tf_bmiwert.setBounds(400,70,120,21);
    tf_bmiwert.setText("0");
    add(tf_bmiwert);
    
    bu_los.setLabel("LOS!");
    bu_los.setBounds(200,100,100,21);
    add(bu_los);
    bu_los.addActionListener (new ActionListener(){
      public void actionPerformed (ActionEvent evt){
        bu_losActionPerformed (evt);
      }
    });
    
  }
  public void bu_losActionPerformed (ActionEvent evt){
   gewicht =Integer.parseInt(tf_gewicht.getText());
   groesse = Integer.parseInt(tf_groesse.getText());
   bmi= (gewicht/(groesse*groesse));
   System.out.println("Ihr persönlicher BMI-Wert beträgt "+bmi+"Punkte.");
   System.out.println("Sie wiegen "+gewicht+"kg");
   System.out.println("Sie haben eine Größe von "+groesse+"cm.");
  }
  public void auswertung(){
    if (bmi< 16)
           {System.out.println("Sie haben starkes Untergewicht.");}
        else
          if (bmi>=16 && bmi<= 16.99)
              {System.out.println("Sie haben mäßiges Untergewicht");}
          else
            if (bmi >=17 && bmi<= 18.49)
               {System.out.println("Sie haben leichtes Untergewicht.");}
            else
              if (bmi >=18.5 && bmi<=24.99)
                  {System.out.println("Sie haben normales Gewicht");}
              else
                if (bmi>=25 && bmi<29.99)
                    {System.out.println("Sie sind Präadipositas");}
                else
                  if (bmi>=30 && bmi<34.99)
                      {System.out.println("Sie sind Adipositas Grad 1");}
                  else
                    if (bmi>=35 && bmi<39.99)
                        {System.out.println("Sie haben Adipositas Grad 2");}
                    else
                          {System.out.println("Sie haben Adipositas Grad 3");}

  }


}
```


----------



## Alex126 (18. Jun 2010)

So ich hab mich mal auf Fehlersuche begeben...



GAs hat gesagt.:


> ```
> tf_gewicht.setBounds(300,70,90,30);
> tf_groesse.setText("0");
> add(tf_groesse);
> ```



fällt dir hier i.etwas auf? 
du sprichst das falsche Textfeld an, deswegen siehst du es auch nicht!
Es müsste heißen:*tf_gewicht*.setText("0");
                        add(*tf_gewicht*);


GAs hat gesagt.:


> ```
> public void bu_losActionPerformed (ActionEvent evt){
> gewicht =Integer.parseInt(tf_gewicht.getText());
> groesse = Integer.parseInt(tf_groesse.getText());
> ...


Hier musst du gewicht und groesse in double casten da du sie ja oben als double deklariert hast, aber du willst hier mit Integer.parseInt einen Integer übergeben!
Also :    gewicht = *(double)*Integer.parseInt(tf_gewicht.getText());
            groesse =* (double)*Integer.parseInt(tf_groesse.getText());

PS. alles was fett ist musst du in deinem Quellcode ändern!


----------



## agentone (19. Jun 2010)

Und warum sieht die Methode auswertung() plötzlich so kompliziert aus?
Außerdem wird die Methode nie aufgerufen!

Die Methode tf_bmiwert#setText wird auch nie aufgerufen, und somit kann auch garkein Text gesetzt werden!


----------



## GAs (19. Jun 2010)

Danke, ich hab es jetzt soweit hinbekommen, nur bei einer Sache habe ich noch ein Problem und zwar müssen sich die Angaben im Textfeld ja ändern, sobald ich den Button gedrückt habe.

```
public void bu_losActionPerformed(ActionEvent evt){
   groesse=(double)Integer.parseInt(tf_groesse.getText());
   gewicht=(double)Integer.parseInt(tf_gewicht.getText());
   bmiwert=(gewicht/(groesse*groesse));
   tf_bmiwert.setText(bmiwert);
```
Er zeigt mir in der letzten Zeile den Fehler an, aber ich weiß nicht wie man ansonsten den berechneten bmiwert anzeigen soll, wenn vorher nichts im textfield steht...


----------



## Irreparabel (19. Jun 2010)

tf_bmiwert.setText(""+bmiwert);?
die setText Methode erwartet ja einen String, ich geh mal davon aus, dass bmiwert ein double ist.


----------



## GAs (19. Jun 2010)

Ja es hat geklappt danke,danke,danke!! =)


----------



## KiteCat (21. Jun 2010)

Hallo... ich hab meine BMI Rechner, den ich leider schon morgen abgeben muss (ich brauch den Druck  ) jetzt soweit programmiert... Aber wenn ich bei der Größe ein Kommazahl angebe, errechnet das dumme Ding keinen Wert mehr... und Texte angezeigt bekomme ich auch nicht... wer kann mir helfen???


```
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class BMIRechner extends Applet {             // Anfang Variablen für das Layout

   Label lb_Subject = new Label();                           // Anfang Attribute
   Label lb_m = new Label();
   Label lb_kg = new Label();
   Label lb_BMI = new Label();
   Button bu_start = new Button();
   TextField tf_m = new TextField();
   TextField tf_kg = new TextField();
   TextField tf_bmiwert = new TextField();
   
   double m;
   double kg;
   double bmi;                                            // Ende Variablen
   
   public void init () {
     setLayout(null);
     setSize(400,400);
     setBackground(Color.gray);
     
     lb_Subject.setText("Bist du zu dünn? BMI-Rechner");     // Anordnung der Komponenten: Labels, Buttons, Textfelder, ...
     lb_Subject.setBounds(50,25,300,25);
     lb_Subject.setFont(new Font("SansSerif",1,20));
     lb_Subject.setForeground(Color.pink);
     add(lb_Subject);
     
     lb_m.setText("Körpergröße m");
     lb_m.setBounds(50,75,100,25);
     lb_m.setFont(new Font("SansSerif",1,11));
     lb_m.setForeground(Color.pink);
     add(lb_m);
     
     tf_m.setBounds(150,75,40,25);
     tf_m.setText("0,0");
     add(tf_m);
     
     lb_kg.setText("Körpergewicht KG");
     lb_kg.setBounds(200,75,110,25);
     lb_kg.setFont(new Font("SansSerif",1,11));
     lb_kg.setForeground(Color.pink);
     add(lb_kg);
     
     tf_kg.setBounds(310,75,40,25);
     tf_kg.setText("0");
     add(tf_kg);
     
     tf_bmiwert.setBounds(300,200,50,25);
     tf_bmiwert.setText("0");
     add(tf_bmiwert);
     
     bu_start.setLabel("START");                     // Einstellen des Start-Buttons
     bu_start.setBounds(150,125,100,25);
     add(bu_start);
     bu_start.addActionListener (new ActionListener() {
       public void actionPerformed (ActionEvent evt) {
         bu_startActionPerformed (evt);}});
   }

   public void bu_startActionPerformed (ActionEvent evt) {     // Aktion Start-Button
   kg =(double)Integer.parseInt(tf_kg.getText());
   m =(double)Integer.parseInt(tf_m.getText());
   bmi=(double)(kg/(m*m));
   tf_bmiwert.setText(""+bmi);
   System.out.println("Ihr persönlicher BMI-Wert beträgt: "+bmi);
   }
   public void auswertung(){
    if (bmi< 16)
           {System.out.println("Sie haben starkes Untergewicht.");}
        else
          if (bmi>=16 && bmi<= 16.99)
              {System.out.println("Sie haben mäßiges Untergewicht.");}
          else
            if (bmi >=17 && bmi<= 18.49)
               {System.out.println("Sie haben leichtes Untergewicht.");}
            else
              if (bmi >=18.5 && bmi<=24.99)
                  {System.out.println("Sie haben normales Gewicht.");}
              else
                if (bmi>=25 && bmi<29.99)
                    {System.out.println("Sie sind Präadipositas.");}
                else
                  if (bmi>=30 && bmi<34.99)
                      {System.out.println("Sie sind Adipositas Grad 1.");}
                  else
                    if (bmi>=35 && bmi<39.99)
                        {System.out.println("Sie haben Adipositas Grad 2.");}
                    else
                          {System.out.println("Sie haben Adipositas Grad 3.");}
   }
}
```


----------



## eRaaaa (21. Jun 2010)

```
m =(double)Integer.parseInt(tf_m.getText());
```

kann ja auch nix werden...


```
m =Double.parseDouble(tf_m.getText().replace(',', '.'));
```

könnte klappen....


----------



## KiteCat (21. Jun 2010)

ich habs jetzt geändert... zwar etwas anders, da das andere Fehlermeldungen ausgeworfen hat, aber geändert hat sich nichts...


```
m =(double)Integer.parseInt(tf_m.getText().replace(',','.'));
```


----------



## lost (21. Jun 2010)

ich bin grade komplett am verzweifeln!! das da soll sowas wie ein bmi rechner sein..allerdings funktioniert mein java editor nicht, ich hab 88 errors und keine ahnung, o die sind oder wie ich sie behebn könnte..hilfe!!!

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
impotrt java.util.*;

public class BMI-Rechner_Daniela extends Applet {
// Anfang Variablen für Layout

// Anfang Attribute

//Variablen für Labels
Label lb1 = new Label();
Label lb2 = new Label();
Label lb3 = new Label ();
Label lb4 = new Label();
Label lb5 = new Label();

//Variable für Button
Button bu_start = new Button();



//Variablen für Textfelder
TextField tf_groesse = new TextField();
TextField tf_masse = new TextField();
TextField tf_bmi = new Textfield();
TextField tf_bemerkung = new TextField;

//Variablen für Zahlen
double masse;
double groesse;
double bmi;

//Ende Variablen

//Layout des Ausgabefeldes
public void init () {
	setLayout (null);
	setSize(400,400);
	setBackround(Color.purple);

//Anordnung von Labels, Button, Textfeldern

lb1.setText(„BMI-Rechner von Daniela“);
lb1.setBounds(30,20,x,y);
lb1.setFont(new Font(„Old English Text MT“, 1, 18));
lb1.setForeground(Color.blue);
add(lb1);

lb2.setText („Bitte geben Sie Ihr Gewicht und Ihre Körpergröße an!“);
lb2.setBounds (30, 180, x, y);
lb2.setFont (new Font („Old English Text MT“, 1, 18));
lb2.setForeground (Color.blue);
add(lb2);

lb3.setText(„...und hier ist Ihr BMI:“);
lb3.setBounds(30, 240, x, y);
lb3.setFont (new Font („Old English Text MT“, 1, 18));
lb3.setForeground (Color.blue);
add(lb3);

lb4.setText(„m“);
lb4.setBounds(62,150,15,10);
lb4.setFont (new Font („Old English Text MT“, 1, 15));
lb4.setForeground (Color.blue);
add(lb4);

lb5.setText(„kg“);
lb5.setBounds(342,150,15,10);
lb5.setFont (new Font („Old English Text MT“, 1, 15));
lb5.setForeground (Color.blue);
add(lb5);

tf_groesse.setBounds(30, 150, 30, 21);
tf_groesse.setText(„0“);
add(tf_groesse);

tf_masse.setBounds(310, 150, 30 21);
tf_masse.setText(„0“);
add(tf_masse);

tf_bmi.setBounds(130, 260, 30, 21);
tf_bmi.setText(„0“);
add(tf_bmi);

tf_bemerkung.setBounds(130, 300, x, y);
tf_bemerkung.setText(„0“);
add(tf_bemerkung);

bu_start.setLabel(„START“);
bu_start.setBounds(130, 200, 100, 20);
add(bu_start);
bu_start.addActionListener (new ActionListener () {
	public void actionPerformed (ActionEvent evt) {
               bu_startActionPerformed (evt);}});

}

//Programmierung des Start-Buttons
 public void bu_startActionPerformed(ActionEvent evt) {
	double masse = Double.parseDouble(tf_masse.getText()); 
	 double groesse = Double.parseDouble(tf_groesse.getText());
	 double bmi = masse / (groesse* groesse); 
 tf_bmi.setText(Double.toString(bmi)); * * } 
// Programmierung der Bemerkung

{if(bmi>16){bemerkung="Starkes Untergewicht";{
}else (<16bmi>17){bemerkung="Mäßiges Untergewicht";}}
if(17<bmi<18,5){bemerkung="Leichtes Untergewicht";}
if(25bmi<18.5){bemerkung="Normalgewicht";}
if(25<bmi<30){bemerkung="Präadipositas";}
if(30<bmi<35){bemerkung="Adipositas Grad I";}
if(35<bmi<40){bemerkung="Adipositas Grad II";}
if(bmi>40){bemerkung="Adipositas Grad III";}

tf_bemerkung.setText(bemerkung);


----------



## Sunshine (21. Jun 2010)

hallo, ich hab noch 8 fehler und finde die nicht bzw weiß nicht was ich ändern soll...kann mir jemand helfen? danke schonmal 

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class BMI_Rechner_Viktoria_Rossmann_2 extends Applet {

// Anfang Variablen für das Layout

 Label lb_1 = new Label();
 Label lb_2 = new Label();
 Label lb_3 = new Label();
 Label lb_4 = new Label();
 Label lb_5 = new Label();
 TextField tf_groesse = new TextField();
 TextField tf_gewicht = new TextField();
 TextField tf_bmiwert = new TextField();
 TextField tf_bewertung = new TextField();
 Button bu_start = new Button();

 double bmi;
 double gewicht;
 double groesse;

 // Ende Variablen

 // Größe und Farbe des Fensters bestimmen

 public void init () {
   setLayout(null);
   setSize(400,400);
   setBackground(Color.fuchsia);

   // Anordnung der Labels, Buttons und Textfelder

   lb_1.setText("BMI-Minator");
   lb_1.setBounds(150,10,250,10);
   lb_1.setFont(new Font("Old English Text MT", 4,24));
   lb_1.setForeground(Color.green);
   add(lb_1);

   lb_2.setText("Größe in Zentimeter");
   lb_2.setBounds(30,40,150,40);
   lb_2.setFont(new Font("Old English Text MT", 1,12));
   lb_2.setForeground(Color.black);
   add(lb_2);

   lb_3.setText("Gewicht in Kilogramm");
   lb_3.setBounds(30,70,120,20);
   lb_3.setFont(new Font("Old English Text MT", 1,12));
   lb_3.setForeground(Color.black);
   add(lb_3);

   lb_4.setText("Ihr Ergebnis");
   lb_4.setBounds(30,120,120,20);
   lb_4.setFont(new Font("Old English Text MT", 2,18));
   lb_4.setForeground(Color.black);
   add(lb_4);

   lb_5.setText("Bewertung");
   lb_5.setBounds(30,140,120,20);
   lb_5.setFont(new Font("Old English Text MT", 2,18));
   lb_5.setForeground(Color.black);
   add(lb_5);

   tf_groesse.setBounds(155,70,55,20);
   tf_groesse.setText("");
   add(tf_groesse);

   tf_gewicht.setBounds(155,70,55,20);
   tf_gewicht.setText("");
   add(tf_gewicht);

   tf_bmiwert.setBounds(155,120,25,20);
   tf_bmiwert.setText("");
   add(tf_bmiwert);

   tf_bewertung.setBounds(155,140,25,20);
   tf_bewertung.setText("");
   add(tf_bewertung);

   bu_start.setLabel("Berechnen");
   bu_start.setBounds(175,100,50,20);
   add(bu_start);
   bu_start.addActionListener (new ActionListener () {
     public void actionPerformed(ActionEvent evt) {
       bu_startActionPerformed (evt);
     }
   }  );

   // Ende Annordnung Textfelder, Buttons und Labels

   // Programmierung des Buttons Start/Bereechnen

   public void bu_startActionPerformed (ActionEvent evt) {
   gewicht =(double)Integer.parseInt(tf_gewicht.getText());
   groesse =Double.parseDouble(tf_groesse.getText().replace(',', '.'));
   bmi= (int)(gewicht/((groesse/100)*(groesse/100)));
   tf_bmiwert.setText(""+bmi);
   System.out.println("Ihr BMI-Wert: "+bmi);
   }

   // Bewertung

   public void auswertung(){
    if (bmi< 16)
           {System.out.println("Sie sind stark untergewichtig");}
        else
          if (bmi>=16 && bmi<= 16.99)
              {System.out.println("Sie sind mäßig untergewichtig");}
          else
            if (bmi >=17 && bmi<= 18.49)
               {System.out.println("Sie sind leicht untergewichtig");}
            else
              if (bmi >=18.5 && bmi<=24.99)
                  {System.out.println("Sie sind normalgewichtig");}
              else
                if (bmi>=25 && bmi<29.99)
                    {System.out.println("Sie sind übergewichtig");}
                else
                  if (bmi>=30 && bmi<34.99)
                      {System.out.println("Sie haben Adipositas Grad I");}
                  else
                    if (bmi>=35 && bmi<39.99)
                        {System.out.println("Sie haben Adipositas Grad II");}
                    else
                          {System.out.println("Sie haben Adipositas Grad III");}
   }
 }


----------



## dhachim (21. Jun 2010)

@ lost: Ich kann dir sagen wo deine Fehler liegen, massig Schreibfehler, dann programmierst du in Word? Denn Anführungsstriche unten gibts in Java nicht. 
Das If-else-klammern ist auch falsch.
Variablen für x und y fehlen. Genauso wie Variable für bemerkung und bmi.

Dann solltest du den Code auch etwas einrücken, das kann doch kein Mensch so lesen. 
So wird das nix mit den Hausaufgaben.


----------



## dhachim (21. Jun 2010)

@ sunshine:

besser als lost. Du hast im Prinzip nur wenige Fehler im Code selbst, um ein lauffähiges Applet zu bekommen. 

Color.fuchsia gibts so nicht.
Schreib Color.pink zum Beispiel. Die Farbe gibt es.

```
bu_start.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				bu_startActionPerformed(evt);
			}
		});
	} // <----- Diese Klammer hast du vergessen.

	// Ende Annordnung Textfelder, Buttons und Labels
```
Hier noch die Klammer einfügen und es sollte passen.

Was du jetzt dann auf jedenfall noch machen musst: Die ganzen setBounds(x,y,breite,höhe) Methoden überarbeiten. 
Du zeichnest teilweise Textfelder übereinander

```
tf_groesse.setBounds(155,70,55,20);
tf_groesse.setText("");
add(tf_groesse);

tf_gewicht.setBounds(155,70,55,20);
tf_gewicht.setText("");
add(tf_gewicht);
```
Als Beispiel... setze bei tf_groesse die y-Koordinate auf 40 und du siehst beide Felder.

Dann musste die auswerten() Methode auch noch einbauen. Dann hastes


----------



## Sunshine (21. Jun 2010)

dankeschön für deine hilfe, darauf wär ich echt nicht gekommen
lg


----------



## dhachim (21. Jun 2010)

Das ist auch fast unmöglich das zu sehen. Wenn du vor hast, weiter Java Code zu schreiben, solltest du dir einen Java Editor zulegen. Einer mit Syntax Highlighting und der dir Fehler anstreicht. 

Damit wird dir diese Arbeit aus der Hand genommen. 
Aunsonsten:
Code einrücken. 

```
public void MethodenName() {
		if (Bedingung) {
			// Inhalt
		} else {
			// Inhalt
		}
	}
```
so siehst du eventuell Fehler schneller.


----------



## Sunshine (21. Jun 2010)

so ich hab jetzt alles angepasst und der bmi-wert erscheint auch, aber nicht der text also aus der if else schleife nicht...wie kann ich das ändern dass es funktioniert?


----------



## lost (21. Jun 2010)

schreibfehler im sinne von tippfehler oder formulierungsfehler?
wie ich oben schon erwähnt habe, funktioniert mein java editor nicht, ansonsten würde ich wohl kaum in word schreiben.
es ist schon ein bisschen gemein, jemanden so anzublaffen, nur weil er halt ein dummer anfänger ist..
danke für die hilfe und noch einen schönen abend


----------



## dhachim (21. Jun 2010)

Der Text, damit meinst du wahrscheinlich:

```
System.out.println("Sie sind stark untergewichtig")
```

Der Text würde nur in der Konsole gezeigt, nicht in deinem Applet. 

Wie ich schon geschieben habe hast du die auswerten() Methode gar nicht aufgerufen.
Ich denke dir ist nicht klr, wie ein java Programm aufgebaut ist. Ich würde dir raten mal die ersten Kapitel eines Java Buches zu lesen. Oder ein paar Tutorials zu machen.
Galileo Computing :: Java ist auch eine Insel (8. Auflage)

Ein bisschen was musste schon noch selber machen. Zudem haste noch einen Fehler bei der BMI Berechnung. Du castest hier in ein (int) 

```
bmi= (int)(gewicht/((groesse/100)*(groesse/100)));
```
bmi ist aber ein double. 

Das heisst du wirst irgendwann Rundungsfehler bekommen. Und deine Abfragen 
bmi>=16 && bmi<= 16.99
sind dann unsinnig. Beim int, wird alles nach dem Komma abgeschnitten.


----------



## dhachim (21. Jun 2010)

lost hat gesagt.:


> schreibfehler im sinne von tippfehler oder formulierungsfehler?
> wie ich oben schon erwähnt habe, funktioniert mein java editor nicht, ansonsten würde ich wohl kaum in word schreiben.
> es ist schon ein bisschen gemein, jemanden so anzublaffen, nur weil er halt ein dummer anfänger ist..
> danke für die hilfe und noch einen schönen abend


Es lag nicht in meiner Absicht dich anzublaffen. Lies meinen Text als wertungsfreie Fakten. Jeder hat mal klein angefangen.Umso wichtiger ist es wenn dich jemand auf Fehler hinweist.

 Schreibfehler im Sinne von Tippfehler ... 
Ein Beispiel:
	
	
	
	





```
import java.awt.event.*;
impotrt java.util.*
```
na fällt dir was auf ? 

Java kannst du unmöglich in Word programmieren. Nutze den Texteditor, der bei Windows dabei ist.
Auch bei dir, die Farbe purple ist nicht.

Ich helf dir gerne noch weiter, aber n bisschen mehr Einsatz und Fleiß musst du schon aufbrngen. Ich kann dir unmöglich Java hier m Forum beibringen. 

Und wenn du das nächste Mal Java Code postest, nutze mal diese Kaffeetasse über dem Texteingabefeld.


----------



## KiteCat (22. Jun 2010)

Also... meine Datei läuft so weit...
Ich habe nur noch zwei Probleme: 1. wie kann ich den BMI-Wert runden lassen? Ich habe jetzt ersteinmal mit int gearbeitet, würde das aber gerne noch ändern.
2. Ich versteh einfach nicht, warum mein Text nicht aus der if-else-Funktion nicht in den Textfeldern erscheint.
Ich muss das ganze morgen abgeben und wäre super froh, wenn mir jemand eine Antwort geben könnte, für die ich nicht erst das komplette Java-Buch durcharbeiten muss... Danke schonmal im Voraus 
Anbei nochmal meine komplette Datei:

```
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class BMIRechner extends Applet {             // Anfang Variablen für das Layout

   Label lb_Subject = new Label();                           // Anfang Attribute
   Label lb_cm = new Label();
   Label lb_kg = new Label();
   Label lb_BMI = new Label();
   Button bu_start = new Button();
   TextField tf_cm = new TextField();
   TextField tf_kg = new TextField();
   TextField tf_bmiwert = new TextField();
   TextField tf_bemerkung = new TextField();
   TextField tf_ZI = new TextField();
   
   double cm;
   double kg;
   int bmi;                                          // Ende Variablen
   
   public void init () {
     setLayout(null);
     setSize(400,600);
     setBackground(Color.gray);
     
     lb_Subject.setText("Bist du zu dünn? BMI-Rechner");     // Anordnung der Komponenten: Labels, Buttons, Textfelder, ...
     lb_Subject.setBounds(50,25,300,25);
     lb_Subject.setFont(new Font("SansSerif",1,20));
     lb_Subject.setForeground(Color.pink);
     add(lb_Subject);
     
     lb_cm.setText("Körpergröße cm");
     lb_cm.setBounds(50,75,100,25);
     lb_cm.setFont(new Font("SansSerif",1,11));
     lb_cm.setForeground(Color.pink);
     add(lb_cm);
     
     tf_cm.setBounds(150,75,40,25);
     tf_cm.setText("");
     add(tf_cm);
     
     lb_kg.setText("Körpergewicht KG");
     lb_kg.setBounds(200,75,110,25);
     lb_kg.setFont(new Font("SansSerif",1,11));
     lb_kg.setForeground(Color.pink);
     add(lb_kg);
     
     tf_kg.setBounds(310,75,40,25);
     tf_kg.setText("");
     add(tf_kg);
     
     tf_bmiwert.setBounds(50,175,300,25);
     tf_bmiwert.setText("");
     add(tf_bmiwert);
     
     tf_bemerkung.setBounds(50,210,300,25);
     tf_bemerkung.setText("");
     add(tf_bemerkung);
     
     tf_ZI.setBounds(50,245,300,25);
     tf_ZI.setText("");
     add(tf_ZI);
     
     bu_start.setLabel("START");                     // Einstellen des Start-Buttons
     bu_start.setBounds(150,125,100,25);
     add(bu_start);
     bu_start.addActionListener (new ActionListener() {
       public void actionPerformed (ActionEvent evt) {
         bu_startActionPerformed (evt);}});
   }

   public void bu_startActionPerformed (ActionEvent evt) {     // Aktion Start-Button
   kg =(double)Integer.parseInt(tf_kg.getText());
   cm =(double)Integer.parseInt(tf_cm.getText());
   bmi=(int)(kg/((cm/100)*(cm/100)));
   tf_bmiwert.setText("Ihr persönlicher BMI-Wert beträgt: "+bmi);
   }
   public void auswertung(int bmi)
   {
    if (bmi< 16){
           tf_bemerkung.setText("Sie haben starkes Untergewicht.");
           tf_ZI.setText("Suchen Sie einen Arzt auf.");
           }
        else {
          if (bmi>=16 && bmi< 17){
          tf_bemerkung.setText("Sie haben mäßiges Untergewicht.");
          tf_ZI.setText("Suchen Sie einen Arzt auf.");
          }
          else{
            if (bmi >=17 && bmi< 18.5){
            tf_bemerkung.setText("Sie haben leichtes Untergewicht.");
            tf_ZI.setText("Sie sollten mehr Nahrung zu sich nehmen.");
            }
            else{
              if (bmi >=18.5 && bmi< 25){
              tf_bemerkung.setText("Sie haben normales Gewicht.");
              tf_ZI.setText("Alles Bestens");
              }
              else{
                if (bmi>=25 && bmi< 30){
                tf_bemerkung.setText("Sie sind Präadipositas.");
                tf_ZI.setText("Sie sollten beginnen, auf Ihre Ernährung zu achten.");
                }
                else{
                  if (bmi>=30 && bmi< 35){
                  tf_bemerkung.setText("Sie sind Adipositas Grad 1.");
                  tf_ZI.setText("Sie sollten auf Ihre Ernährung achten und Sport treiben.");
                  }
                  else{
                    if (bmi>=35 && bmi< 40){
                    tf_bemerkung.setText("Sie haben Adipositas Grad 2.");
                    tf_ZI.setText("Suchen Sie einen Arzt auf.");
                    }
                    else{
                      tf_bemerkung.setText("Sie haben Adipositas Grad 3.");
                      tf_ZI.setText("Suchen Sie einen Arzt auf.");}
   }}}}}}}

}
```


----------



## KiteCat (22. Jun 2010)

Also... was ich sagen wollte ist, dass ich verstanden habe, dass ich die auswerten() Methode noch einbauen muss, also genauso, wie meine Vorredner, aber ich hab leider keinen Schimmer wie.... 
Wollte das nur nochmal kurz klarstellen


----------



## lost (22. Jun 2010)

ok, danke


----------



## lost (22. Jun 2010)

ok, ich hab das ganze jetzt auf 7 fehler reduzieren könne 
ich fürchte, dass da einige geschweifte klammern zu viel oder zu wenig sind..


```
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class BMI-Rechner_Daniela extends Applet {
// Anfang Variablen für Layout

// Anfang Attribute

//Variablen für Labels
Label lb1 = new Label();
Label lb2 = new Label();
Label lb3 = new Label();
Label lb4 = new Label();
Label lb5 = new Label();

//Variable für Button
Button bu_start = new Button();



//Variablen für Textfelder
TextField tf_groesse = new TextField();
TextField tf_masse = new TextField();
TextField tf_bmi = new Textfield();
TextField tf_bemerkung = new TextField();

//Variablen für Zahlen
double masse;
double groesse;
double bmi;

//Ende Variablen

//Layout des Ausgabefeldes
public void init () {
	setLayout (null);
	setSize(400,400);
	setBackround(Color.pink);

//Anordnung von Labels, Button, Textfeldern

lb1.setText("BMI-Rechner von Daniela");
   lb1.setBounds(30,20,320,25);
      lb1.setFont(new Font("Old English Text MT", 1, 18));
         lb1.setForeground(Color.blue);
             add(lb1);

lb2.setText ("Bitte geben Sie Ihr Gewicht und Ihre Körpergröße an!");
   lb2.setBounds (30, 180, 300, 25);
       lb2.setFont (new Font ("Old English Text MT", 1, 18));
           lb2.setForeground (Color.blue);
               add(lb2);

lb3.setText("...und hier ist Ihr BMI:");
   lb3.setBounds(30, 240, 300, 25);
      lb3.setFont (new Font ("Old English Text MT", 1, 18));
          lb3.setForeground (Color.blue);
              add(lb3);

lb4.setText("m");
   lb4.setBounds(62,150,15,10);
       lb4.setFont (new Font ("Old English Text MT", 1, 15));
           lb4.setForeground (Color.blue);
               add(lb4);

lb5.setText("kg");
   lb5.setBounds(342,150,15,10);
      lb5.setFont (new Font ("Old English Text MT", 1, 15));
          lb5.setForeground (Color.blue);
              add(lb5);

tf_groesse.setBounds(30, 150, 30, 21);
           tf_groesse.setText("0");
                      add(tf_groesse);

tf_masse.setBounds(310, 150, 30, 21);
         tf_masse.setText("0");
                  add(tf_masse);

tf_bmi.setBounds(130, 260, 30, 21);
       tf_bmi.setText("0");
              add(tf_bmi);
              

tf_bemerkung.setBounds(130, 300, 300, 25);
             tf_bemerkung.setText("0");
                          add(tf_bemerkung);

bu_start.setLabel("START");
         bu_start.setBounds(130, 200, 100, 20);
           add(bu_start);
             bu_start.addActionListener (new ActionListener () {
	            public void actionPerformed (ActionEvent evt) {
               bu_startActionPerformed (evt);}});

}

//Programmierung des Start-Buttons
 public void bu_startActionPerformed(ActionEvent evt) {
	double masse = Double.parseDouble(tf_masse.getText());
	 double groesse = Double.parseDouble(tf_groesse.getText());
	 double bmi = masse / (groesse* groesse);
 tf_bmi.setText(Double.toString(bmi));
 * * }
// Programmierung der Bemerkung

public void auswertung(){
       	if (bmi< 16) {System.out.println("Sie haben starkes Untergewicht.");}
  else
        if (bmi>=16 && bmi<= 16.99)  {System.out.println("Sie haben mäßiges Untergewicht.");}
  else
 	      if (bmi >=17 && bmi<= 18.49) {System.out.println("Sie haben leichtes Untergewicht.");}
 	else
 	      if (bmi >=18.5 && bmi<=24.99) {System.out.println("Sie haben normales Gewicht.");}
  else
	      if (bmi>=25 && bmi<29.99)     {System.out.println("Sie sind Präadipositas.");}
	else
	      if (bmi>=30 && bmi<34.99)      {System.out.println("Sie sind Adipositas Grad 1.");}
	else
	      if (bmi>=35 && bmi<39.99)      {System.out.println("Sie haben Adipositas Grad 2.");}
	      
 else                                  {System.out.println("Sie haben Adipositas Grad 3.");}  } }

   }
```


----------



## KiteCat (22. Jun 2010)

@lost... das kannst du doch zählen.... So viele, wie du geöffnet hast musst du auch wieder schließen....


----------



## agentone (22. Jun 2010)

Zeile 6: Der Name der Klasse darf keine Bindestriche enthalten!
Zeile 40: setBackround -> da fehlt ein g
Zeile 106: Was sollen die Sternchen?


----------



## lost (22. Jun 2010)

ich weiß...ich hab eine zu viel geschlossen, aber ich weiß nicht, welche :-(


----------



## agentone (22. Jun 2010)

die letzte klammer ist zuviel!


----------



## lost (22. Jun 2010)

ok, danke  

die sternchen in 106 sind in meinem original garnicht zu sehen, keine ahnung, wo die herkommen


----------



## lost (22. Jun 2010)

aber wenn ich die letzte klammer wegnehme, zeigt er mir wieder einen fehler mehr an


----------



## agentone (22. Jun 2010)

Poste doch mal die Fehlermeldung, sonst weiß niemand, was der Fehler ist, oder wo man suchen könnte!


----------



## lost (22. Jun 2010)

```
^
BMI_Rechner_Daniela.java:106:4: illegal character: \160
 * * }
   ^
BMI_Rechner_Daniela.java:106:5: ';' expected
 * * }
    ^
BMI_Rechner_Daniela.java:109:1: illegal start of expression
public void auswertung(){
^
BMI_Rechner_Daniela.java:109:7: ';' expected
public void auswertung(){
      ^
BMI_Rechner_Daniela.java:109:25: ';' expected
public void auswertung(){
                        ^
BMI_Rechner_Daniela.java:125:110: reached end of file while parsing
       if (bmi>=40)                                {System.out.println("Sie haben Adipositas Grad 3.");}  } }
                                                                                                             ^
7 errors
```


----------



## agentone (22. Jun 2010)

In Zeile 26 hast du übrigens "Textfield" stehen, die Klasse heißt aber "Text*F*ield" !


----------



## agentone (22. Jun 2010)

> BMI_Rechner_Daniela.java:106:4: illegal character: \160
> * * }
> ^
> BMI_Rechner_Daniela.java:106:5: ';' expected
> * * }



Naja, also sind doch Sternchen in deinem Quellcode!


----------



## lost (22. Jun 2010)

nein, da sind wirklich keine


----------



## agentone (22. Jun 2010)

Dann geh in deinen Editor, drück Strg+A um ALLES zu markieren, drück dann Strg+C um ALLES zu kopieren, geh dann zu deinem Browser, mach einen neuen Beitrag und drück Strg+V um ALLES einzufügen.
Und dann werden wir ja sehen, ob Sternchen in deinem Quelltext sind oder nicht!


----------



## lost (22. Jun 2010)

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class BMI_Rechner_Daniela extends Applet {
// Anfang Variablen für Layout

// Anfang Attribute

//Variablen für Labels
Label lb1 = new Label();
Label lb2 = new Label();
Label lb3 = new Label();
Label lb4 = new Label();
Label lb5 = new Label();

//Variable für Button
Button bu_start = new Button();



//Variablen für Textfelder
TextField tf_groesse = new TextField();
TextField tf_masse = new TextField();
TextField tf_bmi = new TextField();
TextField tf_bemerkung = new TextField();

//Variablen für Zahlen
double masse;
double groesse;
double bmi;

//Ende Variablen

//Layout des Ausgabefeldes
public void init () {
	setLayout (null);
	setSize(400,400);
	setBackground(Color.pink);

//Anordnung von Labels, Button, Textfeldern

lb1.setText("BMI Rechner von Daniela");
   lb1.setBounds(30,20,320,25);
      lb1.setFont(new Font("Old English Text MT", 1, 18));
         lb1.setForeground(Color.blue);
             add(lb1);

lb2.setText ("Bitte geben Sie Ihr Gewicht und Ihre Körpergröße an!");
   lb2.setBounds (30, 180, 300, 25);
       lb2.setFont (new Font ("Old English Text MT", 1, 18));
           lb2.setForeground (Color.blue);
               add(lb2);

lb3.setText("...und hier ist Ihr BMI_Rechner_Daniela:");
   lb3.setBounds(30, 240, 300, 25);
      lb3.setFont (new Font ("Old English Text MT", 1, 18));
          lb3.setForeground (Color.blue);
              add(lb3);

lb4.setText("m");
   lb4.setBounds(62,150,15,10);
       lb4.setFont (new Font ("Old English Text MT", 1, 15));
           lb4.setForeground (Color.blue);
               add(lb4);

lb5.setText("kg");
   lb5.setBounds(342,150,15,10);
      lb5.setFont (new Font ("Old English Text MT", 1, 15));
          lb5.setForeground (Color.blue);
              add(lb5);

tf_groesse.setBounds(30, 150, 30, 21);
           tf_groesse.setText("0");
                      add(tf_groesse);

tf_masse.setBounds(310, 150, 30, 21);
         tf_masse.setText("0");
                  add(tf_masse);

tf_bmi.setBounds(130, 260, 30, 21);
       tf_bmi.setText("0");
              add(tf_bmi);


tf_bemerkung.setBounds(130, 300, 300, 25);
             tf_bemerkung.setText("0");
                          add(tf_bemerkung);

bu_start.setLabel("START");
         bu_start.setBounds(130, 200, 100, 20);
           add(bu_start);
             bu_start.addActionListener (new ActionListener () {
	            public void actionPerformed (ActionEvent evt) {
               bu_startActionPerformed (evt);}});

}

//Programmierung des Start-Buttons
 public void bu_startActionPerformed(ActionEvent evt) {
	double masse = Double.parseDouble(tf_masse.getText());
	 double groesse = Double.parseDouble(tf_groesse.getText());
	 double bmi = masse / (groesse* groesse);
 tf_bmi.setText(Double.toString(bmi));
 * * }
// Programmierung der Bemerkung

public void auswertung(){
       	if (bmi< 16) {System.out.println("Sie haben starkes Untergewicht.");}
  else
        if (bmi>=16 && bmi<= 16.99)  {System.out.println("Sie haben mäßiges Untergewicht.");}
  else
 	      if (bmi >=17 && bmi<= 18.49) {System.out.println("Sie haben leichtes Untergewicht.");}
 	else
 	      if (bmi >=18.5 && bmi<=24.99) {System.out.println("Sie haben normales Gewicht.");}
  else
	      if (bmi>=25 && bmi<29.99)     {System.out.println("Sie sind Präadipositas.");}
	else
	      if (bmi>=30 && bmi<34.99)      {System.out.println("Sie sind Adipositas Grad 1.");}
	else
	      if (bmi>=35 && bmi<39.99)      {System.out.println("Sie haben Adipositas Grad 2.");}

 else
       if (bmi>=40)                    {System.out.println("Sie haben Adipositas Grad 3.");}  } }


         }


----------



## lost (22. Jun 2010)

sieht jetzt doof aus, aber in java haut er halt ständig sternchen rein


----------



## srea (22. Jun 2010)

Ohne die Sternchen kompilierts bei mir. Und die Sternchen sind wieder da... In Zeile 106. Mach mal in deinem Editor Strg+F und * *


----------



## lost (22. Jun 2010)

bei mir ziegt er noch einen an

BMI_Rechner_Daniela2.java:128:1: class, interface, or enum expected
}
^
1 error


----------



## srea (22. Jun 2010)

Oh, sorry, die letzte 
	
	
	
	





```
}
```
 noch entfernen.


----------



## agentone (22. Jun 2010)

Also das die letzte Klammer fehlt, hab ich dir oben schon mal gesagt... 
Aber naja, jetzt müsste es endlich mal funktionieren!


----------



## lost (22. Jun 2010)

macht er aber nicht...hab jetzt noch eine klammer eingefügt, aber er zeigt immer noch einen fehler an


----------



## srea (22. Jun 2010)

Nicht noch eine einfügen, die letzte rausnehmen.
Am besten du gibst den schliessenden Klammern eine eigene Zeile und arbeitest mit Einrückungen. Dann siehst du, wie weit nach oben du schon geschlossen hast.


----------



## lost (22. Jun 2010)

jaa!! er hats compiliert!!


----------



## lost (22. Jun 2010)

...und dann hat er das angezeigt:

Starte C:\Dokumente und Einstellungen\bg82clda\Desktop\BMI_Rechner_Daniela4.java

java.lang.NoSuchMethodError: main
Exception in thread "main"


----------



## agentone (22. Jun 2010)

Das ist jetzt nicht dein ernst, oder? RESPEKT
Du musst jetzt nur noch ein bisschen an der Oberfläche und an der Quelltext-Einrückung arbeiten...
Und benutze zukünftig eine IDE wie zum Beispiel Eclipse. Mit soetwas werden deine Fehler schon während des Programmierens angezeigt. (Sonst hätte ich deine Fehler niemals so schnell gefunden...)


----------



## agentone (22. Jun 2010)

Du hast ein Applet geschrieben. Folglich musst du es mit dem AppletViewer starten:
Also nicht java.exe BMI_Rechner_Daniela 
sondern appletviewer.exe BMI_Rechner_Daniela.html
in der Konsole eingeben. Dafür brauchst du aber zunächst eine passende HTML-Seite...

Zum Beispiel so:

```
<html>
<head><title>BMI_Rechner_Daniela</title></head>
<body>
<applet code="BMI_Rechner_Daniela.class" width="500" height="500" alt="BMI_Rechner_Daniela">
</applet>
</body>
</html>
```


----------



## lost (22. Jun 2010)

danke danke danke danke danke!!!!


----------



## lost (22. Jun 2010)

hat sich erledigt, er zeigts im browser an


----------



## dhachim (22. Jun 2010)

lost hat gesagt.:


> jaa!! er hats compiliert!!



Gratuliere, :applaus:
ein Schritt in die richtige Richtung. Aber auch bei dir fehlt der Text im Auswertungsfeld... 
du machst nur eine System.out.println... damit schreibst du nur in die Konsole nicht in dein Applet.

Tipp: deinTextfeld.setText("Text"); 

tut was du brauchst. du musst jetzt nur noch ne Variable einführen, und diese dem Textfeld je Fall zuweisen. Am ende der auswertung(), dann noch das Textfeld füllen.


----------



## mira123456 (27. Aug 2011)

hi, hier drunter ist mein Programm. Hab alles versucht, doch mein Button funktioniert immer noch nicht! Hoffe das ihr mir helfen könnt, weitere Fehler hab ich noch nicht gefunden!!!
Danke im Voraus!!!  Ihr könnt mich Mira nennen.

```
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 23.08.2011
  * @author
  */

public class apnr2 extends Applet {
  // Anfang Attribute
  private JLabel jLabel1 = new JLabel();
  private JLabel jLabel2 = new JLabel();
  private JLabel jLabel3 = new JLabel();
  private JNumberField jNumberField1 = new JNumberField();
  private JNumberField jNumberField2 = new JNumberField();
  private JButton jButton1 = new JButton();
  private JLabel jLabel4 = new JLabel();
  private JLabel jLabel5 = new JLabel();
  private JLabel jLabel6 = new JLabel();
  // Ende Attribute

  public void init() {
    Panel cp = new Panel(null);
    cp.setBounds(0, 0, 303, 300);
    add(cp);
    // Anfang Komponenten

    jLabel1.setBounds(80, 33, 60, 16);                                           //Eingabe
    jLabel1.setText("Gewicht:");                                                 //Ausgabe
    jLabel1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  //Verarbeitung
    cp.add(jLabel1);                                                             //Verarbeitung
    jLabel2.setBounds(80, 72, 51, 16);                                           //Eingabe
    jLabel2.setText("Größe:");                                                   //Ausgabe
    jLabel2.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  //Verarbeitung
    cp.add(jLabel2);                                                             //Verarbeitung
    jLabel3.setBounds(96, 208, 36, 16);                                          //Eingabe
    jLabel3.setText("BMI:");                                                     //Ausgabe
    jLabel3.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  //Verarbeitung
    cp.add(jLabel3);                                                             //Verarbeitung
    jNumberField1.setBounds(136, 28, 65, 24);     // Feld für Gewicht            //Eingabe
    jNumberField1.setText("");                                                   //Ausgabe
    cp.add(jNumberField1);                                                       //Verarbeitung
    jNumberField2.setBounds(136, 72, 65, 24);      //Feld für Größe              //Eingabe
    jNumberField2.setText("");                                                   //Ausgabe
    cp.add(jNumberField2);                                                       //Verarbeitung
    jLabel4.setBounds(208, 32, 74, 16);                                          //Eingabe
    jLabel4.setText("Kilogramm");                                                //Ausgabe
    jLabel4.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  //Verarbeitung
    cp.add(jLabel4);                                                             //Verarbeitung
    jLabel5.setBounds(208, 72, 44, 16);                                          //Eingabe
    jLabel5.setText("Meter");                                                    //Ausgabe
    jLabel5.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  //Verarbeitung
    cp.add(jLabel5);                                                             //Verarbeitung
    jLabel6.setBounds(136, 208, 13, 16);                                         //Eingabe
    jLabel6.setText("");                                                         //Ausgabe
    jLabel6.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));                  //Verarbeitung
    cp.add(jLabel6);                                                             //Verarbeitung
    jButton1.setBounds(96, 128, 113, 41);                                        //Eingabe
    jButton1.setText("BERECHNEN");                                               //Ausgabe
    jButton1.setMargin(new Insets(2, 2, 2, 2));                                  //Verarbeitung
    jButton1.addActionListener(new ActionListener() {                            //Verarbeitung
      public void actionPerformed(ActionEvent evt) {                             //Verarbeitung
        jButton1_ActionPerformed(evt);                                           //Verarbeitung
      }
    });
    cp.add(jButton1);                                                            //Verarbeitung
    // Ende Komponenten

  }
  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {                        //Verarbeitung
    // TODO hier Quelltext einfügen
    
    double gewicht=0, groesse=0, bmi=0;                                               //Eingabe
    
    gewicht=Integer.parseInt(jNumberField1.getText());                             //Eingabe
    groesse=Integer.parseInt(jNumberField2.getText());                             //Eingabe
    bmi=gewicht/groesse;                                                           //Verarbeitung
    bmi=bmi/groesse;                                                               //Verarbeitung
    jLabel6.setText(String.valueOf(bmi));                                          //Ausgabe
  }

  // Ende Methoden

}
```


----------



## Gast2 (27. Aug 2011)

"funktioniert nicht" ist keine Fehlerbeschreibung.
Was geht nicht?
Woher kommt deine Klasse JNumberfield, die importierst du nirgends.


----------



## Final_Striker (27. Aug 2011)

> Hab alles versucht, doch mein Button funktioniert immer noch nicht!



Er funktioniert schon, aber du siehst nichts, weil dein Ausgabe Label zu kurz ist und dein Applet Fenster zu klein.


----------



## Ruderer1993 (28. Aug 2011)

Falls hier immer noch jemand Probleme hat, ich schreibe euch gerne einen voll funktionstüchtigen BMIRechner mit euren Wünschen mit Kommentaren dran und erklär euch den Code via Skype oder TS. Für 10 €.
Wer will kann sich melden. 
Habe mal schnell eine kleine Test-App geschrieben:


----------



## mira123456 (6. Sep 2011)

Final_Striker hat gesagt.:


> Er funktioniert schon, aber du siehst nichts, weil dein Ausgabe Label zu kurz ist und dein Applet Fenster zu klein.



danke für deine hilfe!!!

vielleicht gehts jetzt!!

LG Mira


----------



## Fab1 (10. Sep 2011)

Hallo Java Forum,

der Ein oder Andere wird sich jetzt warscheinlich denken "Ohh GOTT bitte nicht schon wieder ein Post in dem Thread" was wirklich verständlich wäre, nachdem ich jetzt die 4 Seiten angeschaut habe. 
Aufgrund von Langeweile dachte ich mir heute ich könnte auch so einen BMI Rechner programmieren. 

Allerdings bin ich auf dieses Problem gestoßen.

Dies ist nur ein Auszug der Fehlermeldung, da ich denke, dass dieser Teil reicht.


```
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "22,53"
	at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
	at java.lang.Double.parseDouble(Unknown Source)
	at BMI.bmiBerechnen(BMI.java:78)
	at BMI.actionPerformed(BMI.java:66)
```

Die Fehlerquelle versteckt sich irgendwo hier:


```
public void actionPerformed(ActionEvent event){
		ausgabe.setText(String.valueOf(bmiBerechnen()));	
	}
	
	double bmiBerechnen(){
		
		NumberFormat n = NumberFormat.getInstance();
		n.setMaximumFractionDigits(2); 
		
		Double größeD = Double.parseDouble(größe.getText());
		Double gewichtD = Double.parseDouble(gewicht.getText());

		double bmi = (gewichtD / ((größeD/100) * (größeD/100)));
		bmi = Double.parseDouble(n.format(bmi));     // wenn ich dies ausklammere dann funktionierts
		return bmi;
	}
```

Wenn ich, wie in dem Kommentar vom Quellcode geschrieben, diese Zeile ausklammere, dann funktioniert es.
Trotzallem hätte ich es gern auf 2 Stellen gerundet. Es gibt ja die ein oder andere Methode dies zu erledigen ich habe mir diese ausgesucht. Bei der wird die Zahl in einen String verwandelt, daher wieder der Parse zu double. Ich weis aber nicht warum dann eine Fehlermeldung kommt.

Über eine Lösung würde ich mir freuen

Gruß GEEK!


----------



## eRaaaa (10. Sep 2011)

"22,53" kann nicht zu einem Double geparst werden mit der Methode parseDouble, du kannst schließlich auch nicht double d = 22,53 schreiben, sondern musst den Punkt verwenden  (d=22.53)!
"22.53" geht dann also 
Steht aber auch alles in der Doku

Demnach musst du das Komma durch einen Punkt ersetzen


----------



## Fab1 (10. Sep 2011)

danke eRaaaaa, hätte ich auch selbst drauf kommen können.

vorallem, weil ich als ich mir den Thread durchgelesen habe auch darauf gestoßen bin, was auch von dir geschrieben wurde. Naja doppelt hält besser :applaus:


Gruß GEEK


----------



## Rätselslöser (1. Dez 2011)

Auch wenn es recht spät kommt, wollte ich mich in Namen meiner Gruppe bei KiteCat für die immense Vorarbeit bedanken.

Desweiteren an alle anderen verzweifelten Schüler die diese verdammte Textausgabe brauchten:

In KiteCats Script steht vor der If-Else Funktion folgender Term:

}
   public void auswertung(int bmi)

dieser verursacht, dass die Textausgabe nicht funktioniert, wenn ihr diesen entfernt und einfach eine geschweifte Klammer dafür am Ende des Programmes einfügt funktioniert es einwandfrei.

Hoffe zukünftigen Informatik Generationen geholfen zu haben


----------

