# Java Problem (Anfaenger)



## Knuspi (18. Dez 2012)

Hallo,
bin noch recht Anfaenger in dem Gebiet des "Programmierens"..

Hab jetzt als Hausaufgabe, ein Programm zu schreiben, dass den BMI berechnet und bewertet.


Spoiler: Ich habs mal versucht





```
public class BMI {
  
  
  public static void main(String[] args) {
    //Aufgabenstellung:
    // Nach Eingabe von Körpergröße und Gewicht wird der Body-Mass-Index berechnet und eine entsprechende Bewertung ausgegeben.
    double gewicht, koerpergroesse, bmi;
    
    int geschlecht, alter;
    
    
    geschlecht=Console.readInt("Wenn Sie weiblich sind druecken Sie eine Zahl die kleiner oder gleich 10 ist auf Ihrer Tastatur, falls Sie männlich sind druecken Sie bitte die eine Zahl über 10. ");
    alter = Console.readInt("Geben Sie Ihr Alter ein! ");
    
    gewicht=Console.readDouble("Geben Sie Ihr Koerpergewicht in Kilogramm (kg) an! ");
    koerpergroesse = Console.readDouble("Geben Sie Ihre Koerpergroesse in Metern (m) an! (Verwenden sie den Punkt als Komma) ");
    
    bmi=(gewicht/(koerpergroesse*koerpergroesse));
    
    System.out.println("Ihr BMI beträgt  " + bmi );
    
    if((geschlecht<=10)&&(alter<=24));    { 
      
      if(bmi<=18){
        System.out.println("Sie sind untergewichtig!  ");
      }
      else {
        if((bmi>18)&&(bmi<25))
        System.out.println("Sie haben Normalgewicht. " );
        
        if(bmi>28)
        System.out.println("Sie sind leicht bis stark uebergewichtig. " );
      }
    }
    
    if((geschlecht<=10)&&(alter>=25)&&(alter<=34));    { 
      
      if(bmi<=19){                           
        System.out.println("Sie sind untergewichtig!  ");
      }
      else {
        if((bmi>19)&&(bmi<=24))
        System.out.println("Sie haben Normalgewicht. " );
        
        if(bmi>25)
        System.out.println("Sie sind leicht bis stark uebergewichtig. " );
      }
    }
    
    if((geschlecht<=10)&&(alter>=35)&&(alter<=44));    { 
      
      if(bmi<=20){                           
        System.out.println("Sie sind untergewichtig!  ");
      }
      else {
        if((bmi>20)&&(bmi<=26))
        System.out.println("Sie haben Normalgewicht. " );
        
        if(bmi>27)
        System.out.println("Sie sind leicht bis stark uebergewichtig. " );
      }
    } 
    
    if((geschlecht<=10)&&(alter>=45)&&(alter<=54));    { 
      
      if(bmi<=21){                           
        System.out.println("Sie sind untergewichtig!  ");
      }
      else {
        if((bmi>21)&&(bmi<=27))
        System.out.println("Sie haben Normalgewicht. " );
        
        if(bmi>28)
        System.out.println("Sie sind leicht bis stark uebergewichtig. " );
      }
    } 
    
    if((geschlecht<=10)&&(alter>=55)&&(alter<=64));    { 
      
      if(bmi<=22){                           
        System.out.println("Sie sind untergewichtig!  ");
      }
      else {
        if((bmi>22)&&(bmi<=28))
        System.out.println("Sie haben Normalgewicht. " );
        
        if(bmi>29)
        System.out.println("Sie sind leicht bis stark uebergewichtig. " );
      }
    }  
    
    if((geschlecht<=10)&&(alter>=65)&&(alter<=90));    { 
      
      if(bmi<=23){                           
        System.out.println("Sie sind untergewichtig!  ");
      }
      else {
        if((bmi>23)&&(bmi<=29))
        System.out.println("Sie haben Normalgewicht. " );
        
        if(bmi>30)
        System.out.println("Sie sind leicht bis stark uebergewichtig. " );
      }
    }  
    
    
    
    
    
    if((geschlecht>10)&&(alter<=24));    { 
      
      if(bmi<=18){
        System.out.println("Sie sind untergewichtig!  ");
      }
      else {
        if((bmi>20)&&(bmi<25))
        System.out.println("Sie haben Normalgewicht. " );
        
        if(bmi>26)
        System.out.println("Sie sind leicht bis stark uebergewichtig. " );
      }
    }
    
    if((geschlecht>10)&&(alter>=25)&&(alter<=34));    { 
      
      if(bmi<=20){                           
        System.out.println("Sie sind untergewichtig!  ");
      }
      else {
        if((bmi>20)&&(bmi<=26))
        System.out.println("Sie haben Normalgewicht. " );
        
        if(bmi>26)
        System.out.println("Sie sind leicht bis stark uebergewichtig. " );
      }
    }
    
    if((geschlecht>10)&&(alter>=35)&&(alter<=44));    { 
      
      if(bmi<=21){                           
        System.out.println("Sie sind untergewichtig!  ");
      }
      else {
        if((bmi>21)&&(bmi<=27))
        System.out.println("Sie haben Normalgewicht. " );
        
        if(bmi>27)
        System.out.println("Sie sind leicht bis stark uebergewichtig. " );
      }
    } 
    
    if((geschlecht>10)&&(alter>=45)&&(alter<=54));    { 
      
      if(bmi<=22){                           
        System.out.println("Sie sind untergewichtig!  ");
      }
      else {
        if((bmi>22)&&(bmi<=28))
        System.out.println("Sie haben Normalgewicht. " );
        
        if(bmi>33)
        System.out.println("Sie sind leicht bis stark uebergewichtig. " );
      }
    } 
    
    if((geschlecht>10)&&(alter>=55)&&(alter<=64));    { 
      
      if(bmi<=23){                           
        System.out.println("Sie sind untergewichtig!  ");
      }
      else {
        if((bmi>23)&&(bmi<=29))
        System.out.println("Sie haben Normalgewicht. " );
        
        if(bmi>29)
        System.out.println("Sie sind leicht bis stark uebergewichtig. " );
      }
    }  
    
    if((geschlecht>10)&&(alter>=65)&&(alter<=90));    { 
      
      if(bmi<=24){                           
        System.out.println("Sie sind untergewichtig!  ");
      }
      else {
        if((bmi>24)&&(bmi<=30))
        System.out.println("Sie haben Normalgewicht. " );
        
        if(bmi>34)
        System.out.println("Sie sind leicht bis stark uebergewichtig. " );
      }
    }  
    
    
  }   // end of main
  
} // end of class BMI
```



Meine Frage:
Bei der Ausgabe wird jetzt immer mehrmals ein Ergebnis der Bewertung ausgegeben -> ichs sehe aber nicht dass mehrere Bedingungen richtig sind..?

Könnt ihr mir helfen, wie ich das verbessern kann?
Danke im Vorraus 

Liebe Grüße


----------



## Michael... (18. Dez 2012)

Na Mahlzeit ;-) Du könntest man versuchen die verschiedenen ifs zusammenzufassen und evtl. tiefer zu strukturieren.

Du hast mehrmals ein 
	
	
	
	





```
;
```
 unmittelbar hinter einem if(...) damit ist der if Block sofort beendet.


----------



## Trolllllll (18. Dez 2012)

Verwende den Java-Tag


----------



## Knuspi (18. Dez 2012)

Wie gesagt ich bin blutiger Anfaenger, dh. ich versteh meist Bahnhof^^ 
Werd mich aber mal mit beschaeftigen..
Wuesste nur gern wieso die Ausgabe immer mehrfach ist ..

Lg


----------



## Michael... (18. Dez 2012)

> Wuesste nur gern wieso die Ausgabe immer mehrfach ist ..





Michael... hat gesagt.:


> Du hast mehrmals ein ; unmittelbar hinter einem if(...)


Das 
	
	
	
	





```
;
```
 gehort an diesen Stellen weg.


----------



## Knuspi (18. Dez 2012)

habes geschafft danke @Michael


----------



## Michael... (18. Dez 2012)

Ausserdem hast Du da noch ein paar Lücken


> ```
> if ((geschlecht <= 10) && (alter <= 24)){
> if (bmi <= 18) {
> System.out.println("Sie sind untergewichtig! ");
> ...


Was ist bei Frauen jünger als 25 und einem bmi zwischen 25 und 28?


----------



## Trolllllll (18. Dez 2012)

Trolllllll hat gesagt.:


> Verwende den Java-Tag



Hättest du es im Java-Tag könnte man darauf referenzieren, aber da du scheinbar weder den Dicken Roten Text zu lesen scheinst noch meinen Komentar, mhh ja ist das nunmal schwer aber wie Michael... ja geschrieben hat if(...); ist nunmal falsch


----------



## Knuspi (18. Dez 2012)

> Hättest du es im Java-Tag könnte man darauf referenzieren, aber da du scheinbar weder den Dicken Roten Text zu lesen scheinst noch meinen Komentar, mhh ja ist das nunmal schwer aber wie Michael... ja geschrieben hat if(...); ist nunmal falsch




tut mir leid, bin zum ersten mal im Forum..
und ich hab deinen Kommentar nicht überlesen 
werde naechstes mal drauf achten, sry

lg


----------



## JohannisderKaeufer (18. Dez 2012)

Michael... hat gesagt.:


> Ausserdem hast Du da noch ein paar Lücken
> 
> Was ist bei Frauen jünger als 25 und einem bmi zwischen 25 und 28?





Spoiler: Gibts nicht.



Die sind sind in dem Alter entweder alle Fett oder Magersüchtig.


----------



## pappawinni (18. Dez 2012)

[OT]Ich sehe, dass andere auch Spoilern wollen und es nicht schaffen. Mir ging das auch so. 
Das funktioniert aber vermutlich, wenn man am Anfang statt 



Spoiler



eben z.B. 



Spoiler: Hier



schreibt, oder auch einfach 



Spoiler:  



[/OT]



Spoiler: hier



Jedenfalls bei mir


----------



## hüteüberhüte (19. Dez 2012)

BMI berechnen gab es hier schon einmal/(mehrmals).


----------

