Arrayinhalt als Schleife durchgehen und ausgeben

BastiFantasti86

Grünschnabel
Hallo Leute!
Ich programmiere derzeit ein Programm zur Berechnung des Body-Mass-Index(BMI).
Desweiteren soll ich das Idealgewicht (gewichtsbereich) herausbekommen und Normalgewicht (z.b. ob Untergewichtig oder nicht)
Ich habe ein Array angelegt mit verschieden personen + Daten und will das in einer Schleife ausgeben, bis alle Personen überprüft wurden. Daran scheiter ich leider
Bitte um Hilfe!

1. klasse

Code:
public class Person 
{
	
    public int alter;
    private int koerpergroesse;
    private float koerpergewicht; 
	private boolean mann;
	private double bmi;
	private double bereichVon;
	private double bereichBis;
	private int altersklasse;
	private String gewicht;


	
	public Person()	{}
	
	public Person(boolean mann, int koerpergroesse,float koerpergewicht, int alter) 
	{
		
		this.mann = mann;
		this.koerpergroesse = koerpergroesse;
		this.koerpergewicht = koerpergewicht;
		this.alter = alter;

	}

	
	
	public void berechneNormalGewicht() 
	{
				if (bmi < 14 + altersklasse) 
				{
					gewicht = ("krankhaftes Untergewicht");
			    }
			    else if (bmi >= (14 + altersklasse)) 
			    	
			    if (bmi <= (18.9 + altersklasse))
			    {
			    	gewicht = ("Untergewicht");
			    }
			    else if (bmi >= (19 + altersklasse))
			    	
			    if (bmi <= (23.9 + altersklasse))
			    {
			    	gewicht = ("Normalgewicht");
			    }
			    else if (bmi >= (24 + altersklasse)) 
			    	
			    if (bmi <= (28.9 + altersklasse))
			    {
			    	gewicht = ("leichtes Übergewicht");
			    }
			    else if (bmi >= (29 + altersklasse)) 
			    	
			    if (bmi <= (38.9 + altersklasse))
			    {
			    	gewicht = ("Übergewicht");
			    }
			    else if (bmi >= (39 + altersklasse))
			    {
			    	gewicht = ("krankhaftes Übergewicht");
			    }
			     
		}
	public void legeAltersklasseFest()
	{
		if (alter >= 19) if (alter <= 24)
		{
			altersklasse = 0; 
		}
		else if (alter >= 25) if (alter <= 34)
		{
			altersklasse = 1;
		}
		else if (alter >= 35) if (alter <= 44)
		{
			altersklasse = 2;
		}
		else if (alter >= 45) if (alter <= 54)
		{
			altersklasse = 3;
		}
		else if (alter >= 55) if (alter <= 64)
		{
			altersklasse = 4;
		}
		else if (alter >= 65)
		{
			altersklasse = 5;
		}
	}

	
	public void berechneIdealGewicht()
	{
		bereichVon = (19 + altersklasse) * ((koerpergroesse * koerpergroesse) / 10000);
		bereichBis = (23.9 + altersklasse) * ((koerpergroesse * koerpergroesse) / 10000); 

		
	}
	public void berechneBMI(){
		bmi = (koerpergewicht / (koerpergroesse * koerpergroesse) * 10000);

	}    


	public void gibBMIAus()
	{

		System.out.println("Ihr Body-Mass-Index betraegt:    " + bmi);
	}
	
	public void gibNormalGewichtAus()
	{
		System.out.println("Sie haben:    " + gewicht);
	}
	
	public void gibIdealGewichtAus()
	{

		System.out.println("Ihr Gewicht sollte in folgendem Bereich liegen: " + bereichVon + " - " + bereichBis + " kg");
	}


}

2. klasse
Code:
public class Hauptprogramm 
{
	
	public void arrayAnlegen()
	{
		
	Person[] personen = new Person[9];
	        
			   personen[0] = new Person(true, 178, (float) 82.7, 27);
			   personen[1] = new Person(false, 162, (float) 65.7, 23);
			   personen[2] = new Person(true, 182, (float) 88.0, 30);
			   personen[3] = new Person(false, 175, (float) 55.3, 19);
			   personen[4] = new Person(false, 176, (float) 80.9, 35);
			   personen[5] = new Person(true, 185, (float) 90.0, 66);
			   personen[6] = new Person(true, 190, (float) 110.5, 49);
			   personen[7] = new Person(false, 158, (float) 66.4, 18);
			   personen[8] = new Person();

	
    for(int i=0; i < personen.length; i++)
    {
    	
    	personen[i].berechneNormalGewicht();
        personen[i].legeAltersklasseFest();
	personen[i].berechneIdealGewicht();
	personen[i].berechneBMI();
	personen[i].gibBMIAus();
	personen[i].gibIdealGewichtAus();
    	personen[i].gibNormalGewichtAus();
    }
    
    }		     
}

3. klasse
Code:
public class Bewertung {


	public static void main(String[] args)
	{
	Hauptprogramm gewichtsberechnung = new Hauptprogramm();
        gewichtsberechnung.arrayAnlegen();
	}

}
 
Zuletzt bearbeitet:
Es funktioniert derzeit alles.
Ich bin mir nur im unklaren, wie ich das Array in der For-schleife wiederholen lasse(das ausgeklammerte) und mein ergebnis Ausgebe
 
Die For-Schleife sieht schon richtig aus. Mut zum Austesten! Wenn es nicht klappt etwas rumprobieren oder nochmal hier fragen ;)
 
bei mir kommt folgendes raus leider:

Ihr Gewicht sollte in folgendem Bereich liegen: 0.0
Sie haben: null
Ihr Body-Mass-Index betraegt: 0.0
 
Was erwartetst du....?
Du initialsierst eine neue Person (ohne irgendwelche Werte)
Java:
Hauptprogramm gewichtsberechnung = new Hauptprogramm();
		Person a = new Person();

Wenn du dir die Werte aus deiner "Hauptprogramm"-Klasse ausgeben willst, musst du in deiner "Berechnungsklasse" auf das Personen-Array zugreifen, bzw. die entsprechende Methode aufrufen (arrayAnlegen() ).
Java:
Hauptprogramm gewichtsberechnung = new Hauptprogramm();
		gewichtsberechnung.arrayAnlegen();

schon bekommst du die Werte, die du dort angelegt hast, auch ausgegeben :)
Edit meint, nachdem du natürlich die For-Schleife in der HauptprogrammKlasse wieder einkommentiert hast!
 
Zuletzt bearbeitet:
ok danke soweit!
ich hab mein Code jetzt oben berichtigt, aber jetz bekomm ich wahrscheinlich aufruffehler:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
at paket.Hauptprogramm.arrayAnlegen(Hauptprogramm.java:20)
at paket.Bewertung.main(Bewertung.java:9)
 
achso^^,

du musst in der "Hauptklasse" den Eintrag
Java:
			   personen[9] = new Person();

entfernen, oder halt ein Array mit 10 Personen definieren!
Du initialisierst dein Array mit ... = new Personen[9];
von 0-8 sind es schon 9 Personen...und dann greifst du auf das 10. Element an der 9. Position zu...das kann nicht gehen ;)

mfg
 
ja stimmt war ich blind :)
danke jetz hab ich meine daten ausgegeben
eine sache noch jetz bekomm ich nur "krankhaftes untergewicht" aus?!
if-else sind doch korrekt oder
 
Zurück