Java < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 21:44 Sa 17.05.2014 | Autor: | Benko |
Aufgabe | Moin ich möchte mit dem Prg. den BMI berechnen. Bei der Abfrage, ob der BMI nochmal berechnet werden soll, hab ich ne do-while - Schleife verwendet.
Geht nich der Scheiß, warum ? Hast jmd ne Idee, wo der Syntaxfehler is?
VG |
import java.util.Scanner;
public class übung1 {
public static void main (String [] args){
Scanner scan = new Scanner (System.in);
String antwortja= new String ("ja");
String antworteingabe;
do{
System.out.println("Geben Sie Ihr Gewicht in Kg ein: ");
double gewicht= scan.nextDouble();
System.out.println("Geben Sie Ihre Größe in Meter ein: ");
double groesse= scan.nextDouble();
double bmi= berechnen(groesse,gewicht); //Methode berechnen deklarieren
System.out.println("Ihr BMI ist+" +bmi );
anzeigen(bmi);
System.out.println("Wollen Sie den bmi erneut berechen, ja oder nein?");
antworteingabe=scan.nextLine(); }
while(antworteingabe.equals(antwortja));
}
public static double berechnen(double groesse, double gewicht){
double bmi = gewicht/(groesse*groesse);
return bmi;
}
public static void anzeigen(double bmi){ //Methode anzeigen
if (18 <= bmi && bmi <= 24) // Idealgewicht
System.out.println("Sie haben Idealgewicht, top!");
else if (bmi < 18) // Untergewicht
{
System.out.println("Sie haben Untergewicht, essen Sie maln bisschen mehr Pfannkuchenoder Burger.");
} else if (24 < bmi && bmi <= 30) // leichtes Übergewicht
{
System.out.println("Sie haben leichtes Übergewicht, finger weg von der Schokolade.");
} else
System.out.println("Sie sind fett (Adipositas, gehen Sie bitte ins Fitnessstudio.");
}
}
|
|
|
|
Hallo Benko,
> Moin ich möchte mit dem Prg. den BMI berechnen. Bei der
> Abfrage, ob der BMI nochmal berechnet werden soll, hab ich
> ne do-while - Schleife verwendet.
> Geht nich der Scheiß, warum ? Hast jmd ne Idee, wo der
> Syntaxfehler is?
Es ist die Abfrage ob ein weiterer Durchlauf erfolgen soll,
zu modifizieren.
> VG
> import java.util.Scanner;
>
>
> public class übung1 {
>
> public static void main (String [] args){
>
> Scanner scan = new Scanner (System.in);
> String antwortja= new String ("ja");
> String antworteingabe;
> do{
>
>
> System.out.println("Geben Sie Ihr Gewicht in Kg ein: ");
> double gewicht= scan.nextDouble();
>
> System.out.println("Geben Sie Ihre Größe in Meter ein:
> ");
> double groesse= scan.nextDouble();
>
> double bmi= berechnen(groesse,gewicht); //Methode
> berechnen deklarieren
> System.out.println("Ihr BMI ist+" +bmi );
>
> anzeigen(bmi);
> System.out.println("Wollen Sie den bmi erneut berechen,
> ja oder nein?");
> antworteingabe=scan.nextLine(); }
> while(antworteingabe.equals(antwortja));
>
> }
>
> public static double berechnen(double groesse, double
> gewicht){
>
> double bmi = gewicht/(groesse*groesse);
>
> return bmi;
>
> }
>
> public static void anzeigen(double
> bmi){ //Methode anzeigen
>
> if (18 <= bmi && bmi <= 24) //
> Idealgewicht
>
> System.out.println("Sie haben Idealgewicht, top!");
> else if (bmi < 18) // Untergewicht
> {
> System.out.println("Sie haben Untergewicht, essen Sie
> maln bisschen mehr Pfannkuchenoder Burger.");
> } else if (24 < bmi && bmi <= 30) //
> leichtes Übergewicht
> {
> System.out.println("Sie haben leichtes Übergewicht,
> finger weg von der Schokolade.");
> } else
> System.out.println("Sie sind fett (Adipositas, gehen
> Sie bitte ins Fitnessstudio.");
>
> }
>
> }
Gruss
MathePower
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:49 Sa 17.05.2014 | Autor: | Benko |
Ja und wie mach ich das? Ich hab kein Plan. Wäre nett, wenn du das Programm fertigstellen kannst, sitz schon lange dran..
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 23:35 Sa 17.05.2014 | Autor: | Benko |
Ich habe doch die Do-while-Scheife genommen, um eine Bedingung festzulegen.
Dann hab ich ein Scanner (LINE), also für Strings eingebaut. Ich kann aber nicht JA oder NEIN eingeben...WARUM. Und dieses mal bitte eine quaifizierte Antwort, nicht wie von Mathepower
|
|
|
|
|
Hallo!
Das Problem: das scan.nextDouble liest aus dem Eingabepuffer alle Zeichen ein, die Bestandteil einer Zahl sein können, macht daraus intern auch eine Zahl, und löscht die Zeichen aus dem Putter. Der Zeilenvorschub (Return-Taste) bleibt im Puffer, ist ja kein Bestandteil einer Zahl.
Danach kommt das scan.nextLine. Das sieht den Zeilenvorschub direkt am Anfang des Puffers und denkt, es sei damit schon fertig.
Du mußt dafür sorgen, daß der Puffer vorher geleert wird. Dafür gibt es sicher einen bestimmten Befehl. Vorerst kannst du VOR der Frage, ob noch eine Berechnung durchgeführt werden soll, noch ein weiteres scan.nextLine einfügen, das diesen einen Zeilenvorschob frisst.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 00:57 So 18.05.2014 | Autor: | Benko |
Dankeschön Event_Horizon, wenigstens einer hört hier vernünftige Musik ;)
|
|
|
|