Klassenprobleme

Michi_1989

Mitglied
Hallo nochmal,

ich habe leider immer noch Probleme mit meinem Studentenprogramm. Ich habe auch schon aufgeschrieben, wie ich das Problem lösen will. Aber es klappt nicht, obwohl ich das genau so gemacht habe, wie mein Prof. in seinem Beispiel im Script.
Meine Überlegung :
Eeine neue Klasse erzeugen, worin die Enum werte drin sind und in der main eine Variable erstellen, um sie in der switch Anweisung zu prüfen. Ziel-> Den FB den entsprechenden Studiengänge zuordnen.

Ich denke mal theoretisch sollte dass möglich sein, aber ich bekomme es praktisch nicht gebacken.
Fehlermeldung : non-static variable this cannot be referenced from a static context.

Vielen Dank für eure Hilfe.

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package uebung5;

/**
 *
 * @author Michi
 */
public class Uebung5 {

    /**
     * @param args the command line arguments
     */

enum Studiengang {WINF, INF, MINF, MT, GET};

class Studi {
public void Studg () {
                Studiengang a = Studiengang.WINF;
		Studiengang b = Studiengang.INF;
		Studiengang c = Studiengang.MINF;
		Studiengang d = Studiengang.MT;
		Studiengang e = Studiengang.GET;
}
int s;              
}
       
	public static void main(String[] args) {

		Studiengang a = Studiengang.WINF;
		Studiengang b = Studiengang.INF;
		Studiengang c = Studiengang.MINF;
		Studiengang d = Studiengang.MT;
		Studiengang e = Studiengang.GET;

                
                Studi s = new Studi();
                
		// 50 Studs,0=MatrNr: , 1=Gebjahr: ,2=GebMon: ,3=Gebtag: , 4=Fachbereich: ,5=Alter:
		int [][]stud = new int  [50][6];
		int i=1, max=0, min=0;
		float sum=0;
		//Zufallswerte zuordnen, Schleife über 50 Studs

		System.out.println("Index"+ "\tMatr"+ "\tJahr    Monat"+ "\tTag    FB"+ "\tAlter");
		for (int index=0;index <50;++index) {
			stud[index][0] = (int) (10000+9583*Math.random()); //5-stellige  Zahlen
			stud[index][1] = (int) (1980+10*Math.random()); // geb. ab 1980
			stud[index][2] = (int) (1+100*Math.random()%12); //Werte 1...12
			stud[index][3] = (int) (1+100*Math.random()%30); // Werte 1..30


			switch((int) (10*Math.random())%5){  // Studiengang der Matrikelnr. zufällig zuordenen.
				case 0: System.out.println(a);
				break;
				case 1: System.out.println(b);
				break;
				case 2: System.out.println(c);
				break;
				case 3: System.out.println(d);
				break;
				case 4: System.out.println(e);
			}
                        
                       
                            
                       

			stud[index][5] = (int) ((2011*365+11*30+07)-(stud[index][1]*365+stud[index][2]*30+stud[index][3]))/365; // Alter mit Array berechen


		System.out.println(index
			+": \t"+stud[index][0]
			+"\t"+stud[index][1]
			+"\t"+stud[index][2]
			+"\t"+stud[index][3]
			+"\t"+stud[index][4]
			+"\t"+stud[index][5]
			);

		int n=stud[index][5];     	// Jüngster, Ältester und Durchschnittsalter berechnen.
                sum=sum+n;
                if (i==1) {
                    max=n;
                    min=n;
                }
                if (n>max) max=n;
                if (n<min) min=n;
                ++i;
		}
	 System.out.println("Aeltester: "+max +"\tJuengster: "+min +"\tDurchschnittsalter: "+sum/50);
	}

	}
 

TKausL

Top Contributor
Versuchs anstatt
Java:
 Studi s = new Studi();
mal mit
Java:
Studi s = new Uebung5().new Studi();
 

TKausL

Top Contributor
Den Fehler mache ich aber auch noch. Muss mir das ganze mit inner-class nochmal angucken. Habe grade in Eclipse rumprobiert bis es geklappt hat ^^
 

Michi_1989

Mitglied
Das beruhigt mich ein wenig :)
Was mich allerdings fast zum Heulen bringt, ist dass ich in einer switch-Anweisung keine Klassenvariablen prüfen kann. Also wie es im Thema, welches vor ein paar min geöffnet wurde, steht. Alles umsonst...
Wie kann man mein Problem den lösen? Ich will doch nur diese blöden Fachbereiche den Studiengängen zuordnen.

Gruß
 

Michael...

Top Contributor
Schmeiß den ganzen Code aus der main raus, spendiere der Klasse einen Konstruktor und steck den Code da rein, da kann man dann auch auf Instanzvariablen, innere Klassen usw. zugreifen.

Die main sollte nur als Startpunkt genutzt und möglichst wenig Codezeilen enthalten.
 

tfa

Top Contributor
Du kannst auch ein [c]static[/c] vor das [c]class Studi[/c] schreiben, um so die Inner Class los zu werden. Inner Classes sollte man vermeiden, wenn möglich.
 

Neue Themen


Oben