Java Problem (Anfaenger)

K

Knuspi

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

Hab jetzt als Hausaufgabe, ein Programm zu schreiben, dass den BMI berechnet und bewertet.
Java:
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
 
Zuletzt bearbeitet von einem Moderator:

Michael...

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

Du hast mehrmals ein
Code:
;
unmittelbar hinter einem if(...) damit ist der if Block sofort beendet.
 
K

Knuspi

Gast
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...

Top Contributor
Ausserdem hast Du da noch ein paar Lücken
Java:
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. ");
	}
}
Was ist bei Frauen jünger als 25 und einem bmi zwischen 25 und 28?
 
K

Knuspi

Gast
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
 
P

pappawinni

Gast
[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
eben z.B.
schreibt, oder auch einfach
[/OT]

Jedenfalls bei mir
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Oben