BMI

S

sk72

Gast
Hallo,
Was ist hier in meinem Code falsch, dass mir jedesmal der falsche BMI berechnet wird ?


Java:
	double getBMI() {
		double y = this.groesse/100;
		//System.out.println(gewicht/(y*y));
		return gewicht/(y*y);
	}


Java:
		Person p = new Person("Max","Mustermann",12,175,75);
		System.out.println(" BMI: " + p.getBMI());
 
S

sk72

Gast
Java:
	Person(String vorname,String nachname,int alter,int groesse,int gewicht) {
		this.vorname = vorname;
		this.nachname = nachname;
		this.alter = alter;
		this.groesse = groesse;
		this.gewicht = gewicht;	
	}
 

Kevin94

Top Contributor
Wenn du ein int durch ein int teilst kommt immer ein int raus auch wenn du das Ergebniss einer double Variablen zuweist.Soll heisen bei:
Java:
double y = this.groesse/100;
kommt genau das selbe raus wie bei
Java:
int y = this.groesse/100;
bei beiden wäre y entweder 0.0, 1.0, 2.0,...

Abhilfe wäre eine der zahlen vorher auf double zu ändern, z.B. so:
Java:
double y = this.groesse/100.0;
 
S

sk72

Gast
@kevin:

jop, danke ;)


Java:
	double getBMI() {
		double y = (double) this.groesse / 100;
		return gewicht / (y*y);
	}


Du hattest allerdings zweimal den gleichen Code gepostet, hab trotzdem verstanden was du meinst. ;)

Lg
 
S

sk72

Gast
Kann mir zufällig noch wer sagen, wieso die Eingabe des Namens einfach übersprungen wird ? :O

Zeile 41 / 42 ...

Java:
import java.util.*;

public class Adresse {
	
	public String	name;
	public String 	strasse;
	public int	  	hausnummer;
	public int 		postleitzahl;
	public String 	wohnort;
	public String 	mail;
	public String 	kommentar;
	
	public static void main (String[] args) {
		
		Adresse adr = new Adresse();		
		Scanner eingabe = new Scanner(System.in); 
		boolean fertig = false;
		
		// Starte das Programm
		System.out.println("================");
		System.out.println("Adressverwaltung");
		System.out.println("================");
		
		// Schleifenbeginn
		while(!fertig){
			
			// Menue
			System.out.println("");
			System.out.println("1 = Adresseingabe");
			System.out.println("2 = Adressausgabe");
			System.out.println("3 = Programm beenden");
			
			// Eingabeaufforderung
			System.out.println("\n" +"Ihre Wahl: ");
			int auswahl = eingabe.nextInt(); 
			
			// Fallunterscheidung
			switch(auswahl) {
			case 1: // Adresse eingeben
				
				System.out.print("Name: ");
				adr.name 		= eingabe.nextLine();
				
				
//				System.out.println("Strasse: ");
//				adr.strasse		= eingabe.nextLine();
//				
//				System.out.println("Hausnummer: ");
//				adr.hausnummer  = eingabe.nextInt();
//				
//				System.out.println("Postleitzahl: ");
//				adr.postleitzahl = eingabe.nextInt();
//				
//				System.out.println("Wohnort: ");
//				adr.wohnort 	= eingabe.nextLine();
//				
//				System.out.println("Mail: ");
//				adr.mail 		= eingabe.nextLine();
//				
//				System.out.println("Kommentar: ");
//				adr.kommentar 	= eingabe.nextLine();
				break;
			case 2: // Adresse ausgeben
				System.out.println(adr.name);
				System.out.println(adr.strasse +" " +adr.hausnummer);
				System.out.println(adr.postleitzahl +" " +adr.wohnort);
				System.out.println("E-Mail: " +adr.mail);
				System.out.println("KOMMENTAR: " +adr.kommentar);
				break;
			case 3: // Programm beenden
				System.out.println("\n" +"================");
				System.out.println("Ende");
				System.out.println("================");
				fertig = true;
				break;
			default: // Falsche Zahl eingegeben
				System.out.println("\n" +"+++++++++++++++");
				System.out.println("Eingabefehler");
				System.out.println("+++++++++++++++");
			}
		}
	}	
}
 

JAVAnnik

Bekanntes Mitglied
Wenn du es so schreibst geht es:

Java:
System.out.print("Name: ");
adr.name  = eingabe.next();
 

Neue Themen


Oben