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

Ultramann

Mitglied
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:

Java:
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:

Java:
	    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
Java:
 {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:
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

Top Contributor
Moin,

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

ich habe mir die 5,5 Phasen durchgelesen und bin ruhigen Gewissens... :)
5,5 Phasen ? ???:L???:L:eek:

Ich verstehe soweit alles. Das einzige was bei mir etwas Probleme verursacht ist folgendes:
Java:
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
Java:
 {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]?

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

Genauso habe ich meine Probleme mit
Java:
for(int x = 0; x <= 3; x++) alt[x] = Studenten[i][x];
Warum die 3?
Gleiche Begründung wie zuvor ;)

gruß
Klaus
 

XHelp

Top Contributor
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.
 

Neue Themen


Oben