Java Bmi Rechner mit Methoden

Renjiroo

Mitglied
Hallo,
Ich habe vorgestern mit Java lernen angefangen und ich muss einen Bmi Rechner mit einer zusätzlichen Methode in der Die Klassifizierung angegeben wird und dann wieder auf die Main Methode zurückgegeben wird und dort ausgeführt wird. Jedoch funktioniert das ganze nicht, es steht am Ende nämlich nur. Dein BMI beträgt: (...)
null

Jedoch soll in der einen Zeile die Klassifizierung angegeben werden. Ich saß jetzt ungefähr 20Minuten an der Aufgabe, dachte dann ich hätte eine Lösung gefunden, jedoch funktioniert es nicht. Hier der Code



Java:
import java.util.Scanner;

public class bmirechner {

    public static void main(String[] args) {
        String klasse = null;
        Scanner sc = new Scanner(System.in);
        
        double weight, height, bmi = 0;
         klasse = klassifizierung(bmi, klasse);
        System.out.println("Gib deine Größe in Meter ein: " );
        
        height = sc.nextFloat();
        
        System.out.println("Gib dein Gewicht in Kilo ein: ");
        
        weight = sc.nextFloat();
        
        bmi = weight / (height * height);
        
        System.out.println("Dein BMI beträgt: "+ bmi ) ;
        System.out.println(klasse);
        
      

    }
    public static String klassifizierung(double bmi, String klasse) {
        if(bmi > 18.5 && bmi < 24) {
            klasse = "Sie haben Normalgewicht";
        }
        else if(bmi > 25 && bmi < 29) {
            klasse = "Sie haben Übergewicht";
        }
        else if(bmi > 30 && bmi < 34) {
            klasse = "Sie haben Adipositas Grad 1";
        }
        else if(bmi > 35 && bmi < 39) {
            klasse = "Sie haben Adipositas Grad 2";
        }
        else if(bmi > 40) {
            klasse = "Sie haben Adipositas Grad 3";
        }
      
        return klasse;
    }

}
 
In den Zeilen 6 und 9 deklarierst (und initialisierst) Du die Variablen um diese dann direkt in Zeile 10 zu nutzen in dem Methodenaufruf.
Diese Werte (bmi ist 0, klasse ist null) werden dann verarbeitet und die Rückgabe wird zurück gegeben.

Wenn Du danach die Variablen änderst durch eine Eingabe, dann ändert sich natürlich nicht mehr die Berechnung.

Du musst also den Aufruf an die richtige Stelle packen.
 
In den Zeilen 6 und 9 deklarierst (und initialisierst) Du die Variablen um diese dann direkt in Zeile 10 zu nutzen in dem Methodenaufruf.
Diese Werte (bmi ist 0, klasse ist null) werden dann verarbeitet und die Rückgabe wird zurück gegeben.

Wenn Du danach die Variablen änderst durch eine Eingabe, dann ändert sich natürlich nicht mehr die Berechnung.

Du musst also den Aufruf an die richtige Stelle packen.
Ehre funktioniert jetzt und macht so eigentlich auch Sinn
 
Wie wäre es mit folgendem Code
Java:
import java.util.Scanner;

public class bmirechner {

    public static void main(String[] args) {
        String klasse = null;
        Scanner sc = new Scanner(System.in);
        
        double weight, height, bmi = 0;
         klasse = klassifizierung(bmi, klasse);
        System.out.println("Gib deine Größe in Meter ein: " );
        
        height = sc.nextFloat();
        
        System.out.println("Gib dein Gewicht in Kilo ein: ");
        
        weight = sc.nextFloat();
        
        bmi = weight / (height * height);
        
        System.out.println("Dein BMI beträgt: "+ bmi ) ;
        System.out.println(klassifizierung(bmi));
        
      

    }
    public static String klassifizierung(double bmi) {
        String klasse = "Unbekannte Klassifizierung";
        if(bmi > 18.5 && bmi < 24) {
            klasse = "Sie haben Normalgewicht";
        }
        else if(bmi > 25 && bmi < 29) {
            klasse = "Sie haben Übergewicht";
        }
        else if(bmi > 30 && bmi < 34) {
            klasse = "Sie haben Adipositas Grad 1";
        }
        else if(bmi > 35 && bmi < 39) {
            klasse = "Sie haben Adipositas Grad 2";
        }
        else if(bmi > 40) {
            klasse = "Sie haben Adipositas Grad 3";
        }
      
        return klasse;
    }

}
 
Wie wäre es mit folgendem Code
Die Klassifizierung könnte man etwas einfacher formulieren.
Java:
public static String klassifizierung(double bmi) {
        if (bmi <= 18.5)
            return "Unbekannte Klassifizierung";
        if (bmi < 24)
            return "Sie haben Normalgewicht";
        if (bmi < 29)
            return "Sie haben Übergewicht";
        if (bmi < 34)
            return "Sie haben Adipositas Grad 1";
        if (bmi < 39)
            return "Sie haben Adipositas Grad 2";
        return "Sie haben Adipositas Grad 3";
    }
 

Neue Themen


Zurück
Oben