Hallo Community,
ich melde mich mal wieder wegen einer etwas umfangreicheren Aufgabe (zumindest für meine Verhältnisse). Geschrieben werden soll ein Fitness-Rechner, der Daten zur Person erfasst, was sie gegessen hat (Tabelle nach Vorgabe) und einen Trainingsplan aufstellt.
So weit bin ich schon:
Hier passiert beim Ausführen der Methode "Konsum" nach Eingabe der Werte über die Konsole nach dem letzten Wert folgendes:
Exception in thread "main" java.lang.NullPointerException
at FitnessCalc.Konsum(FitnessCalc.java:166)
at FitnessCalc.Datenmaske(FitnessCalc.java:111)
at FitnessCalc.Hauptmenue(FitnessCalc.java:41)
at FitnessCalc.main(FitnessCalc.java:249)
Eigentlich sollte die Methode dann die entsprechende Methode CalcMen/CalcWomen aufrufen, wenn in listofdata[3] der Wert 1(=männlich) oder 2(=weiblich) hinterlegt ist.
Ich komm nich drauf, was da falsch läuft! Someone out there to help me out? 😉
Schonmal vielen Dank!
ich melde mich mal wieder wegen einer etwas umfangreicheren Aufgabe (zumindest für meine Verhältnisse). Geschrieben werden soll ein Fitness-Rechner, der Daten zur Person erfasst, was sie gegessen hat (Tabelle nach Vorgabe) und einen Trainingsplan aufstellt.
So weit bin ich schon:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;
public class FitnessCalc {
private static int listofdata[];
private static int dauer[];
/**
public FitnessCalc() throws IOException{
Datenmaske();
}
* @throws IOException **/
//Methode Hauptmenü
public static void Hauptmenue() throws IOException {
BufferedReader main_menu = new BufferedReader (new InputStreamReader(System.in));
Scanner main_choice = new Scanner (System.in);
try{
System.out.println("=====================================================");
System.out.println(" HAUPTMENÜ ");
System.out.println("=====================================================");
System.out.println(" IHRE OPTIONEN:");
System.out.println();
System.out.println(" 1. Eigene Daten eingeben");
System.out.println(" 2. Berechnung starten");
System.out.println(" 3. Programm beenden");
System.out.println("=====================================================");
int auswahl_main = main_choice.nextInt();
System.out.println();
switch (auswahl_main) {
case 1:
Datenmaske();
break;
case 2:
Konsum();
break;
case 3:
System.out.println("=====================================================");
System.out.println(" *** Programm wird beendet! ***");
System.out.println("_____________________________________________________");
break;
default:
System.out.println("=====================================================");
System.out.println(" *** Bitte richtige Eingabe machen ***");
System.out.println("_____________________________________________________");
try {
Hauptmenue();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
}
}catch (InputMismatchException e){
System.out.println("Fehler! Programm wird neu gestartet!");
Hauptmenue();
}
}
//Methode für Dateneingabe
public static int[] Datenmaske() throws IOException{
int[] listofdata = new int[4];
int gender=0;
Scanner datainput = new Scanner (System.in);
BufferedReader data = new BufferedReader (new InputStreamReader(System.in));
System.out.println("=====================================================");
System.out.println(" *** Starte Datenmaske... ***");
System.out.println("_____________________________________________________");
System.out.println();
System.out.println("1. Bitte geben Sie ihr Gewicht in Kilogramm (kg) an: ");
int gewicht = datainput.nextInt();
System.out.println("2. Bitte geben Sie ihr Alter in Jahren an: ");
int alter = datainput.nextInt();
System.out.println("3. Bitte geben Sie ihre Körpergröße \nin Zentimetern (ohne Nachkommastellen) an: ");
int groesse = datainput.nextInt();
System.out.println("4. Bitte geben Sie ihr Geschlecht an (m / w): ");
char geschlecht = (char) data.read();
switch (geschlecht){
case 'm':
gender = 1;
break;
case 'w':
gender = 2;
break;
}
listofdata[0]=gewicht;
listofdata[1]=alter;
listofdata[2]=groesse;
listofdata[3]=geschlecht;
System.out.println();
System.out.println("Sie haben angegeben: \nGewicht: " + gewicht + " kg \nAlter: " + alter + " Jahre \nGröße: " + groesse + " cm \nGeschlecht: " + gender);
System.out.println();
System.out.println("Wollen Sie die Konsumermittlung starten?");
System.out.println("1. JA");
System.out.println("2. NEIN");
int start = datainput.nextInt();
switch (start){
case 1:
Konsum();
case 2:
Hauptmenue();
default:
Datenmaske();
}
datainput.close();
return listofdata;
}
//
//Methode für Konsumermittlung
public static int[] Konsum() throws IOException{
Scanner calc = new Scanner(System.in);
System.out.println("=====================================================");
System.out.println(" *** Starte Calculator... ***");
System.out.println("_____________________________________________________");
System.out.println("Bitte geben Sie an, wieviel von welcher \nder folgenden Lebensmittel Sie gegessen haben: ");
System.out.println();
System.out.println("a. Glühwein (1 Tasse): ");
int gluehwein = calc.nextInt();
System.out.println("b. Lebkuchen (1 Stück): ");
int lebkuchen = calc.nextInt();
System.out.println("c. Portion Heiße Maronen (100g): ");
int maronen = calc.nextInt();
System.out.println("d. Portion Gebrannte Mandeln (100g): ");
int mandeln = calc.nextInt();
System.out.println("e. Spekulatious (1 Stück): ");
int spekulatius = calc.nextInt();
System.out.println("Sie haben folgende Angaben gemacht: " +
"\nGlühwein: " + gluehwein + " Tassen" +
"\nLebkuchen: " + lebkuchen + " Stück" +
"\nMaronen: " + (maronen*100) + " Gramm" +
"\nMandeln: " + (mandeln*100) + " Gramm\n" +
"Spekulatius: " + spekulatius + " Stück");
System.out.println();
System.out.println("Bitte geben Sie ihre Trainigsdauer (in Stunden) an: ");
System.out.println("1. Crosstrainer: ");
int dauer_cross = calc.nextInt();
System.out.println("2. Stepper: ");
int dauer_step = calc.nextInt();
System.out.println("3. Laufband: ");
int dauer_lauf = calc.nextInt();
calc.close();
int [] dauer = new int[3];
dauer[0] = dauer_cross;
dauer[1] = dauer_step;
dauer[2] = dauer_lauf;
switch (listofdata[3]){
//MÄNNER
case 109:
CalcMen();
break;
//FRAUEN
case 119:
CalcWomen();
break;
}
return dauer;
}
//
//Methode für Berechnung Frauen
public static double[] CalcWomen(){
double[] berechnet_w = new double[3];
double stepper = 8.3;
double crosstrain = 7.9;
double lauf = 7.7;
//Crosstrainerberechnung Männer
double cross_kcal_m = 0;
cross_kcal_m = ((66.47 + (13.7 * listofdata[0]) + (5 * listofdata[2]) - (6.8 * listofdata[1])) * (dauer[0] / 24) * (crosstrain - 1));
berechnet_w[0] = cross_kcal_m;
//Stepperberechnung für Männer
double step_kcal_m = 0;
step_kcal_m = ((66.47 + (13.7 * listofdata[0]) + (1.8 * listofdata[2]) - (6.8 * listofdata[1])) * (dauer[1] / 24) * (stepper - 1));
berechnet_w[1] = step_kcal_m;
//Laufbandberechnung für Männer
double lauf_kcal_m = 0;
lauf_kcal_m = ((66.47 + (13.7 * listofdata[0]) + (5 * listofdata[2]) - (6.8 * listofdata[1])) * (dauer[2] / 24) * (lauf - 1));
berechnet_w[2] = lauf_kcal_m;
try {
Hauptmenue();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return berechnet_w;
}
//
//Methode für Berechnung Männer
public static double[] CalcMen(){
double[] berechnet_m = new double[3];
double stepper = 8.3;
double crosstrain = 7.9;
double lauf = 7.7;
//Crosstrainerberechnung Männer
double cross_kcal_m = 0;
cross_kcal_m = ((66.47 + (13.7 * listofdata[0]) + (5 * listofdata[2]) - (6.8 * listofdata[1])) * (dauer[0] / 24) * (crosstrain - 1));
berechnet_m[0] = cross_kcal_m;
//Stepperberechnung für Männer
double step_kcal_m = 0;
step_kcal_m = ((66.47 + (13.7 * listofdata[0]) + (1.8 * listofdata[2]) - (6.8 * listofdata[1])) * (dauer[1] / 24) * (stepper - 1));
berechnet_m[1] = step_kcal_m;
//Laufbandberechnung für Männer
double lauf_kcal_m = 0;
lauf_kcal_m = ((66.47 + (13.7 * listofdata[0]) + (5 * listofdata[2]) - (6.8 * listofdata[1])) * (dauer[2] / 24) * (lauf - 1));
berechnet_m[2] = lauf_kcal_m;
return berechnet_m;
}
//Hauptprogramm mit UI
public static void main(String[] args) {
FitnessCalc fc = new FitnessCalc();
System.out.println("*****************************************************");
System.out.println(" WILLKOMMEN BEI IHREM FITNESS-CALCULATOR ");
System.out.println("*****************************************************");
try {
Hauptmenue();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Hier passiert beim Ausführen der Methode "Konsum" nach Eingabe der Werte über die Konsole nach dem letzten Wert folgendes:
Exception in thread "main" java.lang.NullPointerException
at FitnessCalc.Konsum(FitnessCalc.java:166)
at FitnessCalc.Datenmaske(FitnessCalc.java:111)
at FitnessCalc.Hauptmenue(FitnessCalc.java:41)
at FitnessCalc.main(FitnessCalc.java:249)
Eigentlich sollte die Methode dann die entsprechende Methode CalcMen/CalcWomen aufrufen, wenn in listofdata[3] der Wert 1(=männlich) oder 2(=weiblich) hinterlegt ist.
Ich komm nich drauf, was da falsch läuft! Someone out there to help me out? 😉
Schonmal vielen Dank!
Zuletzt bearbeitet: