# Nur für's Verständnis, Ausgabe Max, Min und Durchschnitt



## Ultramann (10. Nov 2010)

Moin,

ich habe mir die 5,5 Phasen durchgelesen und bin ruhigen Gewissens... 


Ich habe im Rahmen meines Studiums ein Programm erstellt, welches mir verschiedene zufallsbedingte Informationen zu Studenten ausspuckt wie zB Matrikelnr., Geburtsjahr usw.
Nun wollte ich den Jüngsten, den Ältesten und das Durchschnittsalter berechnen lassen. Da ich damit aber so meine Probleme hatte, habe ich mich mit einem Studi aus dem höheren Semester zusammengesetzt und das zusammen mit ihm gemacht. Läuft jetzt alles prima. Mein Problem ist, dass ich einige Stellen im Programm mittlerweile nicht mehr ganz nachvollziehen kann und bevor ich ihm nochmal auf den Sack gehe, wollte ich das bei euch tun  
Ich poste das ganze einfach mal:


```
public class Studentenverwaltung1 {

    public static void main(String[] args) {


        int [][] Studenten          = new int [50] [7];

        int [] Studiengang         = new int [50];

        char []    Studiengänge     = new char [5];
            Studiengänge[0] = 'C';
            Studiengänge[1] = 'V';
            Studiengänge[2] = 'D';
            Studiengänge[3] = 'B';
            Studiengänge[4] = 'I';


        int aktuellTag     = 03;
        int aktuellMonat = 11;
        int aktuellJahr     = 2010;

//-------------------------------------------------------------------------------------------------------------------------

        for (int i = 0; i < Studenten.length; i++) {

            Studenten[i][0] = 25000 + i;                                    //Matrikelnummer
            Studenten[i][1]    = (int) (Math.random()*31);                        //Tag
            Studenten[i][2]    = (int) (Math.random()*12);                        //Monat
            Studenten[i][3]    = 1973 + (int) (Math.random()*20);                //Jahr



    

            Studenten[i][4] = (int)(Math.random() * 5);

        if (Studiengänge [Studenten [i][4]] == 'C' || Studiengänge [Studenten [i][4]] == 'V')
            Studenten[i][5] = 1;
        else
            Studenten[i][5] = 2;

        }


        for (int i = 0; i < Studenten.length; i++) {

            Studenten[i][6] = (aktuellJahr - Studenten[i][3]);
            if (Studenten[i][2] > aktuellMonat || Studenten[i][2] == aktuellMonat && Studenten[i][1] > aktuellTag)
            Studenten[i][6] = (Studenten[i][6] - 1);

            System.out.println ("Alter des Studenten: " + Studenten[i][6]);
            System.out.println ("#" + Studenten [i][0]);
            System.out.println ("Studiengang: " + Studiengänge[Studiengang[i]]);
            System.out.print("Fachbereich: " + Studenten[i][5] + "\n"+"\n");

        }




        int[] alt = {Studenten[0][0],Studenten[0][1],Studenten[0][2],Studenten[0][3]};
        int[] jung = {Studenten[0][0],Studenten[0][1],Studenten[0][2],Studenten[0][3]};

        for (int i = 1; i < Studenten.length; i++) {
            if((alt[3] > Studenten[i][3]) ||
                ((alt[3] == Studenten[i][3]) && (alt[2] > Studenten[i][2])) ||
                ((alt[3] == Studenten[i][3]) && (alt[2] == Studenten[i][2]) && (alt[1] > Studenten[i][1]))) {
                    for(int x = 0; x <= 3; x++) alt[x] = Studenten[i][x];
        }

        if((jung[3] < Studenten[i][3]) ||
            ((jung[3] == Studenten[i][3]) && (jung[2] < Studenten[i][2])) ||
            ((jung[3] == Studenten[i][3]) && (jung[2] == Studenten[i][2]) && (jung[1] < Studenten[i][1]))) {
                for(int x = 0; x <= 3; x++) jung[x] = Studenten[i][x];
                }
        }
        System.out.println("Ältester Student: #" + alt[0] + "    Geburtstag: " +  alt[1] + "." +  alt[2] + "." +  alt[3]);
        System.out.println("Jüngster Student: #" + jung[0] + "    Geburtstag: " +  jung[1] + "." +  jung[2] + "." +  jung[3]);




        int durchschnitt = 0;
        for (int i = 0; i < Studenten.length; i++) durchschnitt += Studenten[i][6];
        durchschnitt = durchschnitt / Studenten.length;
        System.out.println("Durchschnittalter: " + durchschnitt);


    }
}
```

Ich verstehe soweit alles. Das einzige was bei mir etwas Probleme verursacht ist folgendes:


```
int[] alt = {Studenten[0][0],Studenten[0][1],Studenten[0][2],Studenten[0][3]};
		int[] jung = {Studenten[0][0],Studenten[0][1],Studenten[0][2],Studenten[0][3]};

		for (int i = 1; i < Studenten.length; i++) {
			if((alt[3] > Studenten[i][3]) ||
				((alt[3] == Studenten[i][3]) && (alt[2] > Studenten[i][2])) ||
				((alt[3] == Studenten[i][3]) && (alt[2] == Studenten[i][2]) && (alt[1] > Studenten[i][1]))) {
					for(int x = 0; x <= 3; x++) alt[x] = Studenten[i][x];
		}

		if((jung[3] < Studenten[i][3]) ||
			((jung[3] == Studenten[i][3]) && (jung[2] < Studenten[i][2])) ||
			((jung[3] == Studenten[i][3]) && (jung[2] == Studenten[i][2]) && (jung[1] < Studenten[i][1]))) {
				for(int x = 0; x <= 3; x++) jung[x] = Studenten[i][x];
				}
		}
```

Es werden int arrays mit den Namen alt und jung erstellt, aber wieso werden beide mit 
	
	
	
	





```
{Studenten[0][0],Studenten[0][1],Studenten[0][2],Studenten[0][3]}
```
 gefüllt?
Die if-Schleife raffe ich auch nicht, alt[3] hat doch gar keinen Wert, wie kann das denn größer oder kleiner sein als Studenten _[3]?

Genauso habe ich meine Probleme mit 
	
	
	
	






		Java:In die Zwischenablage kopieren


for(int x = 0; x <= 3; x++) alt[x] = Studenten[i][x];


Warum die 3?

Also programmiert muss da nichts mehr werden, es läuft ja, ich verstehe nur den Teil mit dem jüngsten und ältesten nicht. Wäre nett, wenn mir jemand helfen könnte.

Danke_


----------



## VfL_Freak (10. Nov 2010)

Moin,

ohne mir jetzt den gesamten im Detail angetan zu haben, folgende Bemerkungen/Fragen :



Ultramann hat gesagt.:


> ich habe mir die 5,5 Phasen durchgelesen und bin ruhigen Gewissens...


5,5 Phasen ? ???:L???:L



Ultramann hat gesagt.:


> Ich verstehe soweit alles. Das einzige was bei mir etwas Probleme verursacht ist folgendes:
> 
> ```
> int[] alt = {Studenten[0][0],Studenten[0][1],Studenten[0][2],Studenten[0][3]};
> ...


_
Aber sicher hat *alt*[3] einen Wert ... eben *Studenten*[0][3] !
Du füllst *alt *mit 4 Werten - Index von 0 bis 3 !!



Ultramann hat gesagt.:



			Genauso habe ich meine Probleme mit 


		Java:In die Zwischenablage kopieren


for(int x = 0; x <= 3; x++) alt[x] = Studenten[i][x];

Warum die 3?
		
Zum Vergrößern anklicken....

Gleiche Begründung wie zuvor 

gruß
Klaus_


----------



## XHelp (10. Nov 2010)

Sicher hat alt[3] einen Wert.
int alt/jung[0] steht die Matr.Nr, [1]-Tag, [2] - Monat, [3] - Jahr.
Am Anfang gehst du eben davon aus, dass der 1. Student der älteste und jüngste ist, deswegen weißt du erstmal alt/jung die Werte zu.

Aber generell sieht die Struktur zielmlich spacig aus. Wie willst du in einem int[] - Array den Namen speichern?
Ließt die lieber paar Kapitteln aus irgendeinem Anfängerbuch zum Thema objekteorientierte Programmierung durch.


----------



## XHelp (10. Nov 2010)

VfL_Freak hat gesagt.:


> 5,5 Phasen ? ???:L???:L



http://www.java-forum.org/hausaufga...eim-erschleichen-loesungen-fuer-aufgaben.html


----------



## VfL_Freak (11. Nov 2010)

Moin,



XHelp hat gesagt.:


> http://www.java-forum.org/hausaufga...eim-erschleichen-loesungen-fuer-aufgaben.html



ah ... 

Jetzt weiß ich auch, warum ich das nicht kannte :lol:

Gruß
Klaus


----------

