Java BMI-Programm schreiben
Hey Leute,
Ich muss im Rahmen meiner Ausbildung ein Programm zur Berechnung des BMI schreiben. Jedoch lässt die Unterstützung seitens meines Ausbilders da sehr zu wünschen übrig.
Das Programm soll über die cmd.exe Konsole aufgerufen werden und man soll die Werte Gewicht und Größe eingeben müssen. Als Endergebnis soll dann der BMI ausgeworfen werden.
Wenn ihr Ratschläge habt, wie ich das umsetzen soll, dann bin ich für alles konstruktive dankbar :)
Gruß, PooBucket
3 Antworten
public class BMI {
public static void main(String[] args) {
if (args.length != 2) {
System.out.println("usage: java BMI <m> <kg>");
System.exit(1);
} else {
float l = Float.valueOf(args[0]);
float m = Float.valueOf(args[1]);
float bmi = m / (l * l);
System.out.println(bmi);
}
}
}
Aufrufen an der Konsole:
> java BMI 1.80 75
23.14815
Er liest die Kommandozeilenparameter ein (das Array "args"), interpretiert sie als Fließkommawerte (den ersten als die Körpergröße in Metern, den zweiten als Gewicht in kg), rechnet damit den BMI aus und schreibt ihn raus. Falls nicht exakt zwei Kommandozeilenparameter angegeben sind wird ein Hinweis ausgegeben, wie es richtig wäre.
ich soll das aber mit nem scanner machen.. mein Endprodukt sieht nun erstmal so aus, aber ich weiß nich wieso das falsch ist -.- ich verzweifle echt daran :D
import java.util.Scanner;
public class BMI{
public static void main (String args[]){
char geschlecht ;
double gewicht ;
int groesse ;
double bmi ;
Scanner scan = new Scanner(System.in);
System.out.println("Sind sie ein Mann oder eine Frau?");
System.out.println("");
System.out.println("Mann = m");
System.out.println("Frau = w");
System.out.println("");
geschlecht = scan.nextChar();
System.out.println("Wie groß sind sie?");
System.out.println("");
System.out.println("Geben Sie ihre Größe bitte in cm an.");
System.out.println("");
groesse = scan.nextInt();
System.out.println("Wie groß sind sie?");
System.out.println("");
System.out.println("Geben Sie ihr Gewicht bitte in kg an.");
System.out.println("");
gewicht = scan.nextDouble();
if(geschlecht = w ){ //berrechnet den BMI bei einer Frau
bmi = gewicht/((groesse/90)*(groesse/90));
System.out.println("Ihr BMI beträgt " + bmi);
}
if(geschlecht = m ){ //berrechnet den BMI bei einem Mann
bmi = gewicht/((groesse/100)*(groesse/100));
System.out.println("Ihr BMI beträgt " + bmi);
}
else{ //macht auf eine falsche Eingabe für "Geschlecht" aufmerksam
System.out.println("Bitte geben Sie entweder m oder w für Ihr Geschlecht an!");
}
}
}
Siehste, jetzt weißt du auch warum ich dieses Scanner-Gedöns nervtötend finde. :-p
Guck dir mal die Fehlermeldungen des Compilers an. Die sind meistens erhellend. Sowas kann jedenfalls nicht dein Ernst sein:
if(geschlecht = w ){
Was ist hier w?! Du meinst "w" (ein String). Und außerdem meinst du nicht = (Zuweisungsoperator) , sondern == (Vergleichsoperator). Der aber bei Strings (weil das Objekte sind) fast immer falsch ist. Eigentlich brauchst du equals(). Sowas:
if ("w".equals(geschlecht)) {
nein, du hattest schon recht, 1. das "w" war ein string und 2. musste ich das wirklich mit nem "equals" machen.
der bmi rechner funktioniert nun. hier das endergebnis:
import java.util.Scanner;
public class BMI{
public static void main (String args[]){
//String geschlecht ;
float gewicht ;
float groesse ;
float bmi = 0;
Scanner scan = new Scanner(System.in);
System.out.println("Sind sie ein Mann oder eine Frau?");
System.out.println("");
System.out.println("Mann = m");
System.out.println("Frau = w");
System.out.println("");
String geschlecht = scan.nextLine();
System.out.println("");
System.out.println("Wie groß sind sie?");
System.out.println("");
System.out.println("Geben Sie ihre Größe bitte in cm an.");
System.out.println("");
String input = scan.nextLine();
groesse = Float.valueOf( input ).floatValue();
System.out.println("");
System.out.println("Wie schwer sind sie?");
System.out.println("");
System.out.println("Geben Sie ihr Gewicht bitte in kg an.");
System.out.println("");
String input2 = scan.nextLine();
gewicht = Float.valueOf( input2 ).floatValue();
System.out.println("");
if("w".equals( geschlecht ) ) { //berrechnet den BMI bei einer Frau
bmi = gewicht/((groesse/90)*(groesse/90));
System.out.println("Ihr BMI beträgt " + bmi);
System.out.println("");
System.out.println("");
}
else if("m".equals( geschlecht ) ){ //berrechnet den BMI bei einem Mann
bmi = gewicht/((groesse/100)*(groesse/100));
System.out.println("Ihr BMI beträgt " + bmi);
System.out.println("");
System.out.println("");
}
else{ //macht auf eine falsche Eingabe für "Geschlecht" aufmerksam
System.out.println("Bitte geben Sie entweder m oder w für Ihr Geschlecht an!");
}
if( bmi<25 && bmi>18.49 ){
System.out.println("Sie sind normalgewichtig");
}
else if( bmi<18.499 ){
System.out.println("Sie sind untergewichtig");
}
else if( bmi>25 && bmi<30 ){
System.out.println("Sie sind leicht übergewichtig");
}
else if( bmi<40 && bmi>30 ){
System.out.println("Sie sind übergewichtig");
}
else if( bmi>40 && bmi<70 ){
System.out.println("Sie sind deutlich übergewichtig");
}
else if( bmi>70 ){
System.out.println("Sie sind ein fettes Schwein!");
}
} }
Ja, jetzt ist geschlecht ein String. ;-)
if( bmi<18.499 ){
Da schreibst du besser < 18.5. "Kleiner" heißt sowieso "ohne" die Grenze 18.5. Und dann beim nächsten Intervall >= 18.5, also "mit" der Intervallgrenze, "größer oder gleich".
Stell dir vor es käme 18.495 raus. Dein Programm würde ausgeben, dass die Person normalgewichtig UND untergewichtig sei!
Und wenn jemand den BMI 25 hat bekommt er gar keine Antwort. ;-))
Lass dich inspirieren (oder nicht erwischen): http://www.daniweb.com/software-development/java/threads/228198/calculating-bmi-java-code
Musst nur über Console einlesen, die Berechnung machen (ist ja nicht so schwer) und dann wieder ausgeben
Danke, ich habe jz sowas
import java.util.Scanner;
public class BMI{
public static void main (String args[]){
int geschlecht ;
double gewicht ;
int groesse ;
double bmi ;
Scanner scan = new Scanner(System.in);
System.out.println("Sind sie ein Mann oder eine Frau?");
}
}
ich will, dass eine eingabe erforderlich ist, in der man "Mann" oder "Frau" eingeben muss. Mann soll dann als
int geschlecht = 0
deklariert werden und bei der Eingabe "Frau" soll
int geschlecht = 1
sein. wie mache ich das jz, dass er den die Eingabe Mann bzw Frau in einen int umwandelt?
hat sich schon geändert. sieht jz so aus
String geschlecht = args[0]; double gewicht = args[1]; int groesse ; double bmi ;
Scanner scan = new Scanner(System.in);
System.out.println("Sind sie ein Mann oder eine Frau?");
System.out.println("");
System.out.println("Mann = m");
System.out.println("Frau = w");
System.out.println("");
geschlecht = scan.nextString();
System.out.println(geschlecht);
System.out.println("Wie groß sind sie?");
System.out.println("");
System.out.println("Geben Sie ihre Größe bitte in cm an.");
System.out.println("");
groesse = scan.nextInt();
also, du brauchst einen Scanner oder bufferedReader , 2 variablen ein wenig Mathematik und das wars. den code schreib ich aber nicht für dich :D
kannst du mir erklären, was der code genau macht?