Variablen Array dynamisch halten und ausrechnen

chk1102

Aktives Mitglied
Hallo Zusammen,


ich habe mich an eine Übung gemacht, die BMI ausrechnet.
Der "Klu" dabei ist, das Array dynamisch zu halten und es soll auf jedenfall ein normales Array bleiben.

Das Ausrechnen des BMIs funktioniert, ebenso die Ausgabe.
Berechnung des Durchschnitts aller eingegebenen Werte sowie wie viele Werte ober- und unterhalb des Durchschnitts liegen nicht.

Anbei der Code:
Java:
public class P03_2_nochmalsBMI {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// ein Paar Variablen
		int bmi = 0;
		int summe= 0;
		int durch= 0;
		// Abfrage wie viele Benutzer gefragt werden sollen
		System.out.println("Wie viele BMI sollen berechnet werden?");
		int anzahl = EAM.rInt();

		//mit der Variablen Anzahl will ich das Array anz dynamisch halten
		int anz [] = new int [anzahl];
		
		//solange i kleiner als die Anzahl ist, soll gefragt werden: KG und Größe
		for (int i = 0; i < anzahl; i++) {
			System.out
					.println("BItte geben Sie an ob sie weiblich = 1 oder männlich = 2 sind oder 0 wenn sie aufhören wollen");
			int geschlecht = EAM.rInt();

			//Geschlecht 1 steht für weiblich und 2 für männlich
			if (geschlecht == 1 || geschlecht == 2) {
				System.out
						.println("Nachfolgend bitte Gewicht in KG und Größe in cm");
				int gewicht = EAM.rInt();
				int groesse = EAM.rInt();
				System.out.println("Danke.");
				bmi = gewicht * 10000 / (groesse * groesse);
				
				System.out.println(bmi);
				if (geschlecht == 1) {
					if (bmi < 19) {
						System.out.println("Sie haben untergewicht");
					}
					if (bmi < 29 && bmi >= 19) {
						System.out.println("Normalgewicht");
					} else if (bmi >= 29 && bmi < 30)
						System.out.println("Übergewicht");
					if (bmi >= 30) {
						System.out.println("behandlungsbedürftig");
					}
				}
				if (geschlecht == 2) {
					if (bmi < 20) {
						System.out.println("Sie haben untergewicht");
					}
					if (bmi < 28 && bmi >= 20) {
						System.out.println("Normalgewicht");
					} else if (bmi >= 280 && bmi < 30)
						System.out.println("Übergewicht");
					if (bmi >= 30) {
						System.out.println("behandlungsbedürftig");
					}
				}

			} else if (geschlecht == 0)
				System.out.println("Programmende");

		}
		//Hier soll das Array ausgegeben werden: 1. als durchschnitt in der
		// Variablen durch und dann noch Anzahl der Werte die Ober- und
		// unterhalb des Durchschnitts liegen
		for (int y = 0; y<anz.length; y++) {
			System.out.println("Angegebene Anzahl: " + anz.length);
			anz[y] = bmi;
			summe += anz[y];
			System.out.println("Summe:" + summe);
			durch = summe/anz.length;
			System.out.println("Der Durchschnitt beträgt : " + durch);
		}
		
	}
}


Ich hoffe mir kann jemand helfen.
Danke schon mal:)
 
S

SlaterB

Gast
der "Klu" ist böser Schrift-Anschlag, der "Clou"?

den Clou hast du allerdings vergessen,
nur mit 'Array dynamisch zu halten' soll man jetzt wissen was in deinem funktionierenden Programm anders werden soll?

du fragst doch schon nach der Anzahl, das Array wird passend groß,
wenn noch größer, dann kannst du entweder ein neues erstellen und umkopieren oder der Einfachheit halber gleich am Anfang eine Million verwenden,
soviel wird wohl nicht eingegeben, dafür braucht es aber gleich paar MB Speicher..

wenn Felder frei bleiben, dann müsstest du natürlich bisschen umstellen von array.length auf anzahl
 

chk1102

Aktives Mitglied
Hoppla.. Clou :oops:

Ja das stimmt ich frage bereits nach der Anzahl.
Ich möchte aber wissen, wie der Durchschnitt der berechneten Arrays ist sowie wie viele BMIs unter und oberhalb des Durchschnitts liegen

Ich habe bisher nicht verstanden, wie ich mit Arrays rechnen kann.
 
S

SlaterB

Gast
funktioniert die Durchschnittsrechnung nicht?
wenn der Durchschnitt erstmal da ist, dann ein zweites Mal durch die Liste,
z.B. mit if Zahlen und Durchschnitt vergleichen und bestimmte Zähler erhöhen
 
B

bone2

Gast
du brauchst einfach 2 schleifen:
eine die über das array geht und alles zusammenadiert und durch die anzahl teilt => durchschnitt
dann nochmal rüber schleifen und jeden wert angucken, ob er unter oder über dem durchschnitt liegt. beides mitzählen, fertig
 
S

SlaterB

Gast
falls du meinst: 'für jede Teilaufgabe, etwa Durchschnitt, Ober, .. eine Schleife'
dann nein, nicht unbedingt, hier nur mehrere Schleifen weil ohne Durchschnitt der Rest nicht anzufangen ist

generell kann man schon eher sagen, dass man ohne Schleife, ob direkt oder durch Rekursion, mit einem Array nicht viel anfangen kann
 
H

hüteüberhüte

Gast
Mich hat das auch mal interessiert, deshalb hab ich das mal "nachprogrammiert":

Java:
        Scanner scanner = new Scanner(System.in);
        System.out.print("Wie viele Personen: ");
        int[][] geschlechtGewichtGroesseBMIKategorie = new int[scanner.nextInt()][5];
        for (int i = 0; i < geschlechtGewichtGroesseBMIKategorie.length; i++) {
            System.out.print(i + 1 + ". Person, Geschlecht (w=0, m=1): ");
            geschlechtGewichtGroesseBMIKategorie[i][0] = scanner.nextInt();
            System.out.print(i + 1 + ". Person, Gewicht: ");
            geschlechtGewichtGroesseBMIKategorie[i][1] = scanner.nextInt();
            System.out.print(i + 1 + ". Person, Groesse: ");
            geschlechtGewichtGroesseBMIKategorie[i][2] = scanner.nextInt();
            geschlechtGewichtGroesseBMIKategorie[i][3] =
                    geschlechtGewichtGroesseBMIKategorie[i][1]
                    * 10000
                    / (geschlechtGewichtGroesseBMIKategorie[i][2]
                    * geschlechtGewichtGroesseBMIKategorie[i][2]);
            System.out.println("BMI = " + geschlechtGewichtGroesseBMIKategorie[i][3]);
            if (geschlechtGewichtGroesseBMIKategorie[i][0] == 0) { // weiblich
                if (geschlechtGewichtGroesseBMIKategorie[i][3] < 19) {
                    geschlechtGewichtGroesseBMIKategorie[i][4] = 0;
                    System.out.println("untergewichtig");
                } else if (geschlechtGewichtGroesseBMIKategorie[i][3] < 29) {
                    geschlechtGewichtGroesseBMIKategorie[i][4] = 1;
                    System.out.println("normalgewichtig");
                } else if (geschlechtGewichtGroesseBMIKategorie[i][3] < 30) {
                    geschlechtGewichtGroesseBMIKategorie[i][4] = 2;
                    System.out.println("uebergewichtig");
                } else {
                    geschlechtGewichtGroesseBMIKategorie[i][4] = 3;
                    System.out.println("behandlungsbeduerftig");
                }
            } else if (geschlechtGewichtGroesseBMIKategorie[i][0] == 1) { // maennlich
                if (geschlechtGewichtGroesseBMIKategorie[i][3] < 20) {
                    geschlechtGewichtGroesseBMIKategorie[i][4] = 0;
                    System.out.println("untergewichtig");
                } else if (geschlechtGewichtGroesseBMIKategorie[i][3] < 28) {
                    geschlechtGewichtGroesseBMIKategorie[i][4] = 1;
                    System.out.println("normalgewichtig");
                } else if (geschlechtGewichtGroesseBMIKategorie[i][3] < 30) {
                    geschlechtGewichtGroesseBMIKategorie[i][4] = 2;
                    System.out.println("uebergewichtig");
                } else {
                    geschlechtGewichtGroesseBMIKategorie[i][4] = 3;
                    System.out.println("behandlungsbeduerftig");
                }
            } else {
                System.out.println("Ungueltiges Geschlecht");
                i--;
            }
        }

        double BMIDurchschnitt = 0, kategorieDurchschnitt = 0;
        for (int i = 0; i < geschlechtGewichtGroesseBMIKategorie.length; i++) {
            BMIDurchschnitt += geschlechtGewichtGroesseBMIKategorie[i][3];
            kategorieDurchschnitt += geschlechtGewichtGroesseBMIKategorie[i][4];
        }
        BMIDurchschnitt /= geschlechtGewichtGroesseBMIKategorie.length;
        kategorieDurchschnitt /= geschlechtGewichtGroesseBMIKategorie.length;
        System.out.println("BMIDurchschnitt = " + BMIDurchschnitt);
        System.out.println("KategorieDurchschnitt = " + kategorieDurchschnitt);

        for (int[] a : geschlechtGewichtGroesseBMIKategorie) {
            System.out.println(Arrays.toString(a));
        }

Ab Zeile 4 werden die Personen eingelesen, ab Zeile 11 wird der BMI berechnet sowie die Kategorie, ab Zeile 51 wird der Durchschnitt berechnet und ab Zeile 61 wird das gesamte Array nochmal ausgegeben (alle Daten)

Man soll aber niemanden in Schubladen stecken ;)

(< 19, < 29, < 30 sowie >= 30 bei Frauen und < 20, < 28, < 30 sowie >= 30 bei Männern habe ich jetzt so übernommen)
 
S

SlaterB

Gast
> Man soll aber niemanden in Schubladen stecken

Kalauder:
bei dem Body-Index passen die auch gar nicht rein!
 
H

hüteüberhüte

Gast
Aaaaa, die Namen/Bezeichner sind zu lang... ?

Java:
        Scanner s = new Scanner(System.in);
        System.out.print("Wie viele Personen: ");
        int[][] aa = new int[s.nextInt()][5];
        for (int i = 0; i < aa.length; i++) {
            System.out.print(i + 1 + ". Person, Geschlecht (w=0, m=1): ");
            aa[i][0] = s.nextInt();
            System.out.print(i + 1 + ". Person, Gewicht (kg): ");
            aa[i][1] = s.nextInt();
            System.out.print(i + 1 + ". Person, Groesse (cm): ");
            aa[i][2] = s.nextInt();
            aa[i][3] = aa[i][1] * 10000 / (aa[i][2] * aa[i][2]);
            System.out.println("BMI = " + aa[i][3]);
            if (aa[i][0] == 0) { // weiblich
                if (aa[i][3] < 19) {
                    aa[i][4] = 0;
                    System.out.println("untergewichtig");
                } else if (aa[i][3] < 29) {
                    aa[i][4] = 1;
                    System.out.println("normalgewichtig");
                } else if (aa[i][3] < 30) {
                    aa[i][4] = 2;
                    System.out.println("uebergewichtig");
                } else {
                    aa[i][4] = 3;
                    System.out.println("behandlungsbeduerftig");
                }
            } else if (aa[i][0] == 1) { // männlich
                if (aa[i][3] < 20) {
                    aa[i][4] = 0;
                    System.out.println("untergewichtig");
                } else if (aa[i][3] < 28) {
                    aa[i][4] = 1;
                    System.out.println("normalgewichtig");
                } else if (aa[i][3] < 30) {
                    aa[i][4] = 2;
                    System.out.println("uebergewichtig");
                } else {
                    aa[i][4] = 3;
                    System.out.println("behandlungsbeduerftig");
                }
            } else {
                System.out.println("Ungueltiges Geschlecht");
                i--;
            }
        }

        double bmiAvr = 0, catAvr = 0;
        for (int i = 0; i < aa.length; i++) {
            bmiAvr += aa[i][3];
            catAvr += aa[i][4];
        }
        bmiAvr /= aa.length;
        catAvr /= aa.length;
        System.out.println("BMIDurchschnitt = " + bmiAvr);
        System.out.println("KategorieDurchschnitt = " + catAvr);

        for (int[] a : aa) {
            System.out.println(Arrays.toString(a));
        }

Wenn man jetzt noch durch die vielen Indices durchfindet... Schöner wärs natürlich mit Objekten...

Btw: Ich (m) war bis vor ein paar Wochen noch untergewichtig, dann 10 Kilo zugenommen und jetzt normalgewichtig :D
 
S

SlaterB

Gast
also falls du auch mit dieser zweiten Frage noch mich meinst,
sehe ich mich nun leider gezwungen den Witz zu erklären, was man ja nie tun sollte:

es war nur lustig dass du 'Man soll aber niemanden in Schubladen stecken' bei einem Body-Index-Thema geschrieben hast
(also auch über Dicke, da haben wir sie nun), allein darauf eine Standardantwort, ohne irgendwas weiter zu meinen

so, nun hoffentlich gut ;)
 
H

hüteüberhüte

Gast
Ok, alles klar... Bei dem Thema ist das nur irgendwie unvermeidlich... Aber stimmt, das ist das paradoxe daran...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Array - Länge dynamisch übergeben Java Basics - Anfänger-Themen 7
G Array dynamisch ausgeben Java Basics - Anfänger-Themen 3
G Zweidimensionales Array - dynamisch Java Basics - Anfänger-Themen 4
T Array Dynamisch Erweiterm Java Basics - Anfänger-Themen 15
G Länge eines Array trimmen oder dynamisch verändern. Java Basics - Anfänger-Themen 3
S Dynamisch Platz für ein Array reservieren? Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
A Elemente in einem Array Java Basics - Anfänger-Themen 5
A Vorkommende Farben ermittel und als Array zurückgeben Java Basics - Anfänger-Themen 7
AhmadSlack Array Java Basics - Anfänger-Themen 7
Jambolo Kartenhand Array Java Basics - Anfänger-Themen 14
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
EykS 3D Druckdatei basierend auf 3D Array? Java Basics - Anfänger-Themen 3
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
D EinMalEins mithilfe einer for-Schleife und Array Java Basics - Anfänger-Themen 1
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben