unverständliche Fehlermeldung mit BlueJ

DaSashStYle

Mitglied
Ich wende mich wieder mit einem problem an euch, in der hoffnung, dass mir jemand helfen kann.
Ich arbeite im moment mir dem Programm BlueJ und habe eine Fehlermeldung die ich nciht nachvollziehen kann.

Das ist mein Script:

Code:
import java.awt.*; 
import java.awt.event.*; 

public class MyFrame extends Frame implements ActionListener, WindowListener 
{ 
  Label labelSize, labelWeight, labelResult, labelName, labelAlter, labelGeschlecht;
  TextField tfSize, tfWeight, tfName, tfAlter, tfGeschlecht;
  Button btOK;
  String geschlecht2=new String("m");
  String geschlecht;

  public MyFrame() 
  { 
    setLayout(new GridLayout(3, 2)); 
    setSize(600, 220); 
    labelSize = new Label("Ihre Körpergröße in cm:"); 
    labelWeight = new Label("Ihr Gewicht in kg:"); 
    labelResult = new Label();
    labelName = new Label("Ihr Name: ");
    labelAlter = new Label ("Ihr Alter: ");
    labelGeschlecht = new Label("w oder m?");
    tfSize = new TextField(); 
    tfWeight = new TextField(); 
    tfName = new TextField();
    tfAlter = new TextField();
    tfGeschlecht = new TextField();
    btOK = new Button("OK"); 
    btOK.addActionListener(this); 
    
    add(labelSize); 
    add(tfSize); 
    add(labelWeight); 
    add(tfWeight); 
    add(labelName);
    add(tfName);
    add(labelAlter);
    add(tfAlter);
    add(labelGeschlecht);
    add(tfGeschlecht);
    add(labelResult); 
    add(btOK); 
    addWindowListener(this); 
  }
  
public int normalgewicht (int groesse, String geschlecht)
{
    int ergebnis;
        
    if (geschlecht.equals("m"))
    {
        ergebnis=groesse-100;
    }
    else if (geschlecht.equals("w"))
    {
        ergebnis=groesse-110;
    }
        
    return ergebnis;       //Hier springt der Cursor hin.
}
    
    
public double idealgewicht (int groesse, String geschlecht)
  {
      double ergebnis;
        
      if (geschlecht.equals("m"))
      {
          ergebnis=normalgewicht(groesse, geschlecht)*0.9;
      }
      else if (geschlecht.equals("w"))
      {
          ergebnis=normalgewicht(groesse, geschlecht)*0.85;
      }
        
      return ergebnis;      //Hier wird es denke ich mal auch Probleme geben.
  }

    
public boolean altersueberpruefung (int alter, String name)
{
     boolean uebergabe=true;
      
     if (alter<=14)
     {
         uebergabe=false;
         labelResult.setText(name+ " Sie sind zu jung, der Test nicht für Sie geeignet");
     }
}
  
public void auswerten(int groesse, String geschlecht, int gewicht, String name)
{
    if (normalgewicht(groesse, geschlecht)*1.09<gewicht)
      {
         labelResult.setText(name+ " Sie haben übelst Übergewicht!");
      }
      
      else if (idealgewicht(groesse, geschlecht)*0.91>gewicht)
      {
          labelResult.setText(name+ " Sie haben übelst Untergewicht!");
      }
      
      else
      {
          labelResult.setText(name+ " Sie sind Sexy!");
      }
}  

public void actionPerformed(ActionEvent ev) 
{ 
    int alter = Integer.parseInt(tfAlter.getText());
    geschlecht = tfGeschlecht.getText();
    int groesse = Integer.parseInt(tfSize.getText());
    int gewicht = Integer.parseInt(tfWeight.getText());
    String name = new String(tfName.getText());
    
    if(altersueberpruefung(alter, name))
    {
        auswerten(groesse, geschlecht, gewicht, name);
    }
}  
  public void windowClosing(WindowEvent ev) 
  { 
    setVisible(false); 
    dispose(); 
  } 

  public void windowActivated(WindowEvent ev) { } 
  public void windowClosed(WindowEvent ev) { } 
  public void windowDeactivated(WindowEvent ev) { } 
  public void windowDeiconified(WindowEvent ev) { } 
  public void windowIconified(WindowEvent ev) { } 
  public void windowOpened(WindowEvent ev) { } 
}

Wenn ich dies nun Compiliere kommt die Fehlermeldung: "variable ergebnis might not have been initialized" springen tut der Curser in meinem Code dann auf die oben makierte Stelle.
Was ist hier der Fehler? Hoffe mir kann jemand weiterhelfen.
 
Moin!
Code:
int ergebnis;
if (geschlecht.equals("m"))
{
ergebnis=groesse-100
}
else if (geschlecht.equals("w"))
{
ergebnis=groesse-110;
}
return ergebnis;

Wenn es nur 2 Geschlechter bei dir gibt, solltest du statt else if ein else verwenden..
Denn so besteht die Gefahr das keine der beiden if abfragen erfüllt wird und ergebnis returned wird, ohne das dieser Variablen ein Wert zugewiesen wird.
Je nachdem, was du genau bezweckst kannst du aber auch ergebnis bei der initialisierung einen Default Wert zuweisen..

*grüssle*
MeinerEiner
 
Sorry Leute, hab den Fehler so eben selber gefunden.

Initialisieren heiß nichts anderes als einen Wert zuweisen viel mir grade ein. Also Ergebnis=0 gesetzt und das Ding läuft.

Werde es oben im Script nochmal ändern, damit vorbeischauende die das selbe problem mal haben werden es leichter haben es zu verstehen.
 
Hm... aber so müsste es auch gehen oder?

Code:
int ergebnis=0;
if (geschlecht.equals("m"))
{
ergebnis=groesse-100;
}
else if (geschlecht.equals("w"))
{
ergebnis=groesse-110;
}
else
{
labelResult.setText("Bitte geben Sie w oder m für ein Geschlecht an!");
}
return ergebnis;
 
Eigentlich müsstest du es doch nur ausprobieren, ob es so auch geht oder?


Sieht zumindest mal okay aus..

*grüssle*
MeinerEiner
 
klar, hätte ich es ausprobieren können, allerdings hab ich das nur eben schnell in den Letzten Minuten meiner Mathestunde ins Forum gepostet^^ Sonst hätt ich es natürlich gleich ausprobiert.
 
Zurück