SetWerte über verschiedene Klassen

Bitte aktiviere JavaScript!
Hallo.

Ich habe ein Problem, was mich schon längere Zeit beschäftigt. Ich würde gerne Werte aus der main (über Methodenaufruf in eine Klasse) setzen. Jedoch stoße ich permanent auf Probleme, die ich mir bisher noch nicht erklären kann. Ich würde mich freuen, wenn mir jemand detailliert erklären kann, warum es momentan nicht geht und wie die Lösung aussehen müsste.

Java:
public class main {

    public static void main(String[] args) {

       
        Hochschulangehoeriger student[] = new Hochschulangehoeriger [3];
       
        student[0] = new Hochschulangehoeriger("Jonas", "Müller", "männlich", 22, "Student", null, 24981, 760);

        Person tim = new Person ("Tim", "Steiner", "männlich", 23);
       
       
        //Problem hier
        tim.setAnschrift("Georg-Schumann-Straße", 21, "99484", "Berlin", "Deutschland");
       
        System.out.println(student[0].printAll());
        System.out.println(tim.fullData());
    }

}
Java:
public class Person {

//    Variablen
    String vorname;
    String nachname;
    String geschlecht;
    int alter;

//    Konstruktor
    public Person(String vorname, String nachname, String geschlecht, int alter) {
        this.vorname = vorname;
        this.nachname = nachname;
        this.geschlecht = geschlecht;
        this.alter = alter;
    }

    public String fullData() {
        return (vorname +" "+ nachname +" "+ geschlecht +" "+ alter);
    }
}
Java:
public class Hochschulangehoeriger extends Person {

    String rang;
    String berufsbezeichnung;
    int nummer;
    int gehalt;

    public Hochschulangehoeriger(String vorname, String nachname, String geschlecht, int alter, String rang,
            String berufsbezeichnung, int nummer, int gehalt) {
//        Aufruf des konstruktors der Oberklasse
        super(vorname, nachname, geschlecht, alter);
        this.rang = rang;
        this.berufsbezeichnung = berufsbezeichnung;
        this.nummer = nummer;
        this.gehalt = gehalt;

    }
   

    public String printAll() {
        return (fullData() +" "+ rang +" "+ berufsbezeichnung +" "+ nummer +" "+ gehalt);

    }


   

}
Java:
public class Adressverwaltung extends Hochschulangehoeriger {

    String strasse;
    int hausnummer;
    String plz;
    String stadt;
    String land;

    public Adressverwaltung(String vorname, String nachname, String geschlecht, int alter, String rang,
            String berufsbezeichnung, int nummer, int gehalt, String strasse, int hausnummer, String plz, String stadt,
            String land) {
        super(vorname, nachname, geschlecht, alter, rang, berufsbezeichnung, nummer, gehalt);
        this.strasse = strasse;
        this.hausnummer = hausnummer;
        this.plz = plz;
        this.stadt = stadt;
        this.land = land;

    }

    public void setAnschrift(String strasse, int hausnummer, String plz, String stadt, String land) {
        this.strasse = strasse;
        this.hausnummer = hausnummer;
        this.plz = plz;
        this.stadt = stadt;
        this.land = land;
    }

}
 
Zuletzt bearbeitet:
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
Jedoch stoße ich permanent auf Probleme, die ich mir bisher noch nicht erklären kann.
und wie sollen wir sie erklären, wenn wir nicht wissen, um welche Probleme es geht??? :mad:

Ich würde mich freuen, wenn mir jemand detailliert erklären kann, warum es momentan nicht geht und wie die Lösung aussehen müsste.
Du musst schon ein bisschen deutlicher werden!
Was genau klappt nicht? (was erwartest Du? was passiert stattdessen?)

Nur Code hinklatschen wird nichts bringen !! ;)

VG Klaus
 
Naja das Problem ist, dass ich a nicht weiß, wie ich die Methode ordentlich aufrufe, nachdem ich "tim" erstellt habe.

Ich habe probiert:

Java:
        tim.setAnschrift("Georg-Schumann-Straße", 21, "99484", "Berlin", "Deutschland");
und generell weitere Punktnotationen, mit Adressverwaltung.setAnschrift etc. scheinbar ist die Methode einfach nicht "sichtbar" während hingegen die Methode aus der "Hochschulangehöriger" schon sichtbar ist. Das kann ich mir nicht erklären.
 
Also ich sehe keine Variable julia1, daher kannst Du da natürlich auch nicht drauf zugreifen. Du musst die Variable vorher deklarieren und dann noch eine Instanz zuordnen.

Und dann verstehe ich noch nicht die Klasse Adressverwaltung.
Es gibt Personen, es gibt Hochschulangehörige, die auch Personen sind. Soweit so gut.
Aber wie kommt dann die Adressverwaltung da rein. Eine Adressverwaltung ist ein Hochschulangehöriger ist eine Person? Adressverwaltung ist eine Verwaltung von Adressen. Das könnte also z.B, eine Sammlung von Adressen sein...

Die Abhängigkeit ist doch eher: Person hat eine/mehrere Adresse(n).

Und Tim ist eine Person. Bei Dir ist es so, dass eine Adressverwaltung ein Hochschulangehöriger und damit eine Person ist. Aber damit ist eine Person keine Adressverwaltung.

Also wenn man das mit Tieren macht, dann wird das schnell deutlich:
Katzen -> Säugetiere -> Tier -> Lebewesen.

Also eine Katze ist ein Säugetier (erbt von Säugetier), ist ein Tier (Säugetier erbt von Tier), ist ein Lebewesen (Tier erbt von Lebewesen).
Nun ist aber ein Lebewesen nicht eine Katze....
 
Also ich sehe keine Variable julia1, daher kannst Du da natürlich auch nicht drauf zugreifen. Du musst die Variable vorher deklarieren und dann noch eine Instanz zuordnen.

Und dann verstehe ich noch nicht die Klasse Adressverwaltung.
Es gibt Personen, es gibt Hochschulangehörige, die auch Personen sind. Soweit so gut.
Aber wie kommt dann die Adressverwaltung da rein. Eine Adressverwaltung ist ein Hochschulangehöriger ist eine Person? Adressverwaltung ist eine Verwaltung von Adressen. Das könnte also z.B, eine Sammlung von Adressen sein...

Die Abhängigkeit ist doch eher: Person hat eine/mehrere Adresse(n).

Und Tim ist eine Person. Bei Dir ist es so, dass eine Adressverwaltung ein Hochschulangehöriger und damit eine Person ist. Aber damit ist eine Person keine Adressverwaltung.

Also wenn man das mit Tieren macht, dann wird das schnell deutlich:
Katzen -> Säugetiere -> Tier -> Lebewesen.

Also eine Katze ist ein Säugetier (erbt von Säugetier), ist ein Tier (Säugetier erbt von Tier), ist ein Lebewesen (Tier erbt von Lebewesen).
Nun ist aber ein Lebewesen nicht eine Katze....
Ja okay, da hast du natürlich recht, das war alles eine kleine Spielerei. Aber leider behebt das mein Hauptproblem noch nicht. Ich möchte es nochmal umgeschrieben hier darstellen:

Main: Mit Aufruf zum setzen neuer Werte:
Java:
public class main {


    public static void main(String[] args) {


        Hochschulangehoeriger student[] = new Hochschulangehoeriger [3];


        student[0] = new Hochschulangehoeriger("Jonas", "Müller", "männlich", 22, "Student", null, 24981, 760);


        Person tim = new Person ("Tim", "Steiner", "männlich", 23);


        //Problem hier:


        tim.setAnschrift("Straße", 21, "01111", "Berlin", "Deutschland");

        System.out.println(student[0].printAll());

        System.out.println(tim.fullData());


    }

}

Personenklasse, jetzt mit Adressen.
Java:
public class Person {

//    Variablen
    String vorname;
    String nachname;
    String geschlecht;
    int alter;
    String strasse;
    int hausnummer;
    String plz;
    String stadt;
    String land;

//    Konstruktor
    public Person(String vorname, String nachname, String geschlecht, int alter) {
        this.vorname = vorname;
        this.nachname = nachname;
        this.geschlecht = geschlecht;
        this.alter = alter;
    }

    public String fullData() {
        return (vorname +" "+ nachname +" "+ geschlecht +" "+ alter);
    }

    public void setAnschrift(String strasse, int hausnummer, String plz, String stadt, String land) {
        this.strasse = strasse;
        this.hausnummer = hausnummer;
        this.plz = plz;
        this.stadt = stadt;
        this.land = land;
    }

}
 
Zuletzt bearbeitet von einem Moderator:
und wo ist jetzt bei DIESEM Code das konkrete Problem??

BTW:
Java:
public class main
{...}
Gaaanz schlechte Idee :eek:

VG Klaus
 
Also ja, "main" sollte die Klasse nicht wirklich heißen, weil das
a) klein geschrieben ist, Klassen fangen mit einem Großbuchstaben an.
b) es nichts aussagt.

MainClass wie im ersten Link halte ich auch für komisch. Das ist die wichtige Hauptklasse? Und dann ist da nur sowas drin wie Erzeuge eine Instanz von einer Klasse und rufe run() auf oder setVisible(true)?

Was ich sehr oft sehe ist sowas wie "Application". Oder eben etwas erweitert a. la. "ServerApplication". Aber das mag auch daran liegen, dass ich viel im SpringBoot Umfeld unterwegs bin und da hat man halt eine Klasse, die mit der SpringBootApplication Annotation versehen ist ... (Wobei die main Funktion da nicht zwangsläufig rein gehört. Aber den SpringApplication.run Aufruf in eine extra Klasse packen?)
 
Hallo :)

ich wende mich heute mit einem erneuten Problem an euch.
Ich möchte gerne für Studenten jeweils 3 Noten einlesen, und dieses an eine Klasse übergeben. Jedoch stoße ich dabei auf permanente Probleme. Scheinbar besteht bei meinem Code keine Kompatibilität zwischen den Arrays und dem Konstruktor aus der Klasse. Ich habe jegliche versuche angestellt, Änderungen vorzunehmen, beispielsweise Arrays in den Konstruktor, dann einmal ohne etc etc... Auch vorschlage von Eclipse helfen mir nicht weiter.

Das Problem befindet sich im Case 2 in Zeile 82.

Ich bitte um Hilfe :)

Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;

public class Hochschulverwaltung {

    static int studentenindex = 0;
    static int hochschulAngehoerigerArrayAnzahl = 5;
    static Hochschulangehoeriger student[] = new Hochschulangehoeriger[hochschulAngehoerigerArrayAnzahl];

    static Notenverwaltung zensur[] = new Notenverwaltung[hochschulAngehoerigerArrayAnzahl];

    static Scanner eingabe = new Scanner(System.in);

    public static void main(String[] args) throws IOException {

        int menusteuerung;
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);

        System.out.println(" \t _______________________________________");
        System.out.println("\t|\t\t\t\t\t|");
        System.out.println(" \t|  Student anlegen:\tPress:\t1\t|");
        System.out.println(" \t|  Stundenten anzeigen:\tPress:\t2\t|");
        System.out.println(" \t|  Noten festlegen:\tPress:\t3\t|");
        System.out.println(" \t|  --------:\t\tPress:\t4\t|");
        System.out.println(" \t|  --------:\t\tPress:\t5\t|");
        System.out.println(" \t|  Beenden:\t\tPress:\t9\t|");
        System.out.println(" \t|_______________________________________|");

        do {

            System.out.println("\n\nMenuansicht -> Press: \t0\n");
            menusteuerung = eingabe.nextInt();
//            Schleife zur Menuauswahl, Else-fall mit Hinweis
            if (menusteuerung <= 6 || menusteuerung == 9) {

                switch (menusteuerung - 1) {
                case -1:
                    menueansicht();
                    break;
//                Studenten anlegen
                case 0:
                    setHochschulangehoeriger();
                    studentenindex++;
                    break;
//                Studenten ausgeben
                case 1:
                    for (int i = 0; i <= studentenindex - 1; i++)
                        System.out.println(student[i].printAll());
                    break;

//                Noten festlegen
                case 2:

                    double[] mathe, programmieren, english;
                    mathe = new double[3];
                    programmieren = new double[3];
                    english = new double[3];
                    int k;
                    // studentenindex-1
                    if (studentenindex != 0) {
                        System.out.println("Noten eingeben:");
                        for (int j = 0; j == studentenindex - 1; j++) {

                            System.out.println("für den Studenten: " + student[j].printInfo());
                            for (k = 0; k < 3; k++) {

                                System.out.println("Mathematik Note " + k + ": ");
                                mathe[k] = eingabe.nextDouble(); // eingabe.nextDouble();

                                System.out.println("Programmieren Note " + k + ": ");
                                programmieren[k] = eingabe.nextDouble(); // eingabe.nextDouble();

                                System.out.println("Englisch Note " + k + ": ");
                                english[k] = eingabe.nextDouble(); // eingabe.nextDouble();
                                System.out.println("Aufrufprobleme");

                                //Problem hier:
                                //zensur[studentenindex - 1].setNoten(mathe[k], programmieren[k], english[k]);

                            }

                        }
                    } else
                        System.out.println("Noch kein Student angelegt");

                    break;

                case 3:

                }
            } else {
                System.out.println("Error: Zahl muss zwischen 1 und 3 liegen oder 9 zum Beenden");
            }
        } while (menusteuerung != 9);
        System.out.println("Programm erfolgreich beendet!");

    }

//    Ausgabe Menüansicht:
    public static void menueansicht() {
        System.out.println(" \t _______________________________________");
        System.out.println("\t|\t\t\t\t\t|");
        System.out.println(" \t|  Student anlegen:\tPress:\t1\t|");
        System.out.println(" \t|  --------:\t\tPress:\t2\t|");
        System.out.println(" \t|  --------:\t\tPress:\t3\t|");
        System.out.println(" \t|  --------:\t\tPress:\t4\t|");
        System.out.println(" \t|  --------:\t\tPress:\t5\t|");
        System.out.println(" \t|  Beenden:\t\tPress:\t9\t|");
        System.out.println(" \t|_______________________________________|");

    }

//    Daten einlesen für Studenten
    public static void setHochschulangehoeriger() {
        student[studentenindex] = new Hochschulangehoeriger();
        System.out.println("Studentenvorlage erstellt unter dem Index:" + studentenindex);
        System.out.println("Sollen direkt Daten angelegt werden?");
        System.out.println("Für 'Nein' drücke 0,Für 'Ja' drücke 1");
        int auswahl = eingabe.nextInt();

        if (auswahl == 1) {

            eingabe ein = new eingabe();
            System.out.println("Eingabe der Daten des Studenten");
            System.out.println("==========================");

            String vorname = ein.eingString("Vorname:\t\t");
            String nachname = ein.eingString("Nachname:\t\t");
            String geschlecht = ein.eingString("Geschlecht:\t\t");
            int alter = ein.eingInt("Alter: (Int)\t\t");
            String straße = ein.eingString("Straße:\t\t\t");
            int hausnummer = ein.eingInt("Hausnummer: (Int)\t");
            String postleitzahl = ein.eingString("Postleitzahl:\t\t");
            String stadt = ein.eingString("Stadt\t\t\t");
            String land = ein.eingString("Land:\t\t\t");
            System.out.println("Festlegen der studentenbezogenen Daten");
            String rang = ein.eingString("Rang:\t\t\t");
            String berufsbezeichnung = ein.eingString("Rang:\t\t\t");
            int nummer = ein.eingInt("Matrikelnummer: (Int)\t");
            int gehalt = ein.eingInt("Hausnummer: (Int)\t");

            student[studentenindex].setKontakt(vorname, nachname, geschlecht, alter);
            student[studentenindex].setAnschrift(straße, hausnummer, postleitzahl, stadt, land);
            student[studentenindex].setstudentendaten(rang, berufsbezeichnung, nummer, gehalt);

        } else {
            System.out.println("Keine Daten festgelegt");
        }

    }

}

Java:
public class Person {

//    Variablen
    String vorname;
    String nachname;
    String geschlecht;
    int alter;
    String strasse;
    int hausnummer;
    String plz;
    String stadt;
    String land;

//    Konstruktor
    public Person(String vorname, String nachname, String geschlecht, int alter, String strasse, int hausnummer, String plz, String stadt, String land) {
        this.vorname = vorname;
        this.nachname = nachname;
        this.geschlecht = geschlecht;
        this.alter = alter;
        this.strasse = strasse;
        this.hausnummer = hausnummer;
        this.plz = plz;
        this.stadt = stadt;
        this.land = land;
    }

    public Person() {

    }

    public void setKontakt(String vorname, String nachname, String geschlecht, int alter) {
        this.vorname = vorname;
        this.nachname = nachname;
        this.geschlecht = geschlecht;
        this.alter = alter;
    }

    public void setAnschrift(String strasse, int hausnummer, String plz, String stadt, String land) {
        this.strasse = strasse;
        this.hausnummer = hausnummer;
        this.plz = plz;
        this.stadt = stadt;
        this.land = land;
    }

//    Datenaenderung, ruft verschiedene Methoden auf, um gewisse Daten abzuändern.
    public void datenaenderung() {

        System.out.println("Welches Attribut soll abgeändert werden?");
        namenaenderung("Guiseppe");
    }

    public void namenaenderung(String vorname) {
        this.vorname = vorname;
    }

    public String fullData() {
        return (vorname + " " + nachname + " " + geschlecht + " " + alter + " " + strasse + " " + hausnummer + " " + plz
                + " " + stadt + " " + land);
    }

}

Java:
public class Hochschulangehoeriger extends Person {

    String rang;
    String berufsbezeichnung;
    int nummer;
    int gehalt;


    public Hochschulangehoeriger(String vorname, String nachname, String geschlecht, int alter, String strasse,
            int hausnummer, String plz, String stadt, String land, String rang, String berufsbezeichnung, int nummer,
            int gehalt) {
//        Aufruf des konstruktors der Oberklasse
        super(vorname, nachname, geschlecht, alter, strasse, hausnummer, plz, stadt, land);
        this.rang = rang;
        this.berufsbezeichnung = berufsbezeichnung;
        this.nummer = nummer;
        this.gehalt = gehalt;

    }

    public Hochschulangehoeriger() {

    }

    public void setstudentendaten(String rang, String berufsbezeichnung, int nummer, int gehalt) {
        this.rang = rang;
        this.berufsbezeichnung = berufsbezeichnung;
        this.nummer = nummer;
        this.gehalt = gehalt;

    }


    public String printAll() {
        return (fullData() + " " + rang + " " + berufsbezeichnung + " " + nummer + " " + gehalt);

    }

    public String printInfo() {
        return ("Vorname:\t" + vorname + "\nNachname:\t" + nachname + "\nMatrikelnummer:\t" + nummer);

    }



}

Java:
public class Notenverwaltung {

    double[] mathe;
    double[] programmieren;
    double[] english;
    double durchschnitt;

    Notenverwaltung(double[] mathe, double[] programmieren, double[] english) {

        this.mathe = mathe;
        this.programmieren = programmieren;
        this.english = english;

    }

    public void setNoten(double[] mathe, double[] programmieren, double[] english) {

        this.mathe = mathe;
        this.programmieren = programmieren;
        this.english = english;

    }

    public double rechnen(double mathe[], double programmieren[], double english[]) {

        System.out.println("Noch nichts");

        return durchschnitt;

    }

}

Meine Überlegung ist, dass ich doch vom jeweiligen Studentenindex die Funktion aufrufen muss, damit diese an der selben Stelle, wie der jeweilige Student aufgerufen wird.
Daher:
Java:
//zensur[studentenindex - 1].setNoten(mathe[k], programmieren[k], english[k]);
Eben eingefallen, es müsste natürlich der Aufruf an der Stelle j anstatt "Studentenindex" erfolgen.
Daher-->
Java:
//zensur[j].setNoten(mathe[k], programmieren[k], english[k]);
und meine weitere Überlegung ist, dass jeweils die Note an der Stelle k überreicht werden soll.
Gibt es bis dorthin Denkfehler?
 
Zuletzt bearbeitet:
Hallo :)

ich wende mich heute mit einem erneuten Problem an euch.
Ich möchte gerne für Studenten jeweils 3 Noten einlesen, und dieses an eine Klasse übergeben. Jedoch stoße ich dabei auf permanente Probleme. Scheinbar besteht bei meinem Code keine Kompatibilität zwischen den Arrays und dem Konstruktor aus der Klasse. Ich habe jegliche versuche angestellt, Änderungen vorzunehmen, beispielsweise Arrays in den Konstruktor, dann einmal ohne etc etc... Auch vorschlage von Eclipse helfen mir nicht weiter.

Das Problem befindet sich im Case 2 in Zeile 82.

Ich bitte um Hilfe :)

Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Scanner;

public class Hochschulverwaltung {

    static int studentenindex = 0;
    static int hochschulAngehoerigerArrayAnzahl = 5;
    static Hochschulangehoeriger student[] = new Hochschulangehoeriger[hochschulAngehoerigerArrayAnzahl];

    static Notenverwaltung zensur[] = new Notenverwaltung[hochschulAngehoerigerArrayAnzahl];

    static Scanner eingabe = new Scanner(System.in);

    public static void main(String[] args) throws IOException {

        int menusteuerung;
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);

        System.out.println(" \t _______________________________________");
        System.out.println("\t|\t\t\t\t\t|");
        System.out.println(" \t|  Student anlegen:\tPress:\t1\t|");
        System.out.println(" \t|  Stundenten anzeigen:\tPress:\t2\t|");
        System.out.println(" \t|  Noten festlegen:\tPress:\t3\t|");
        System.out.println(" \t|  --------:\t\tPress:\t4\t|");
        System.out.println(" \t|  --------:\t\tPress:\t5\t|");
        System.out.println(" \t|  Beenden:\t\tPress:\t9\t|");
        System.out.println(" \t|_______________________________________|");

        do {

            System.out.println("\n\nMenuansicht -> Press: \t0\n");
            menusteuerung = eingabe.nextInt();
//            Schleife zur Menuauswahl, Else-fall mit Hinweis
            if (menusteuerung <= 6 || menusteuerung == 9) {

                switch (menusteuerung - 1) {
                case -1:
                    menueansicht();
                    break;
//                Studenten anlegen
                case 0:
                    setHochschulangehoeriger();
                    studentenindex++;
                    break;
//                Studenten ausgeben
                case 1:
                    for (int i = 0; i <= studentenindex - 1; i++)
                        System.out.println(student[i].printAll());
                    break;

//                Noten festlegen
                case 2:

                    double[] mathe, programmieren, english;
                    mathe = new double[3];
                    programmieren = new double[3];
                    english = new double[3];
                    int k;
                    // studentenindex-1
                    if (studentenindex != 0) {
                        System.out.println("Noten eingeben:");
                        for (int j = 0; j == studentenindex - 1; j++) {

                            System.out.println("für den Studenten: " + student[j].printInfo());
                            for (k = 0; k < 3; k++) {

                                System.out.println("Mathematik Note " + k + ": ");
                                mathe[k] = eingabe.nextDouble(); // eingabe.nextDouble();

                                System.out.println("Programmieren Note " + k + ": ");
                                programmieren[k] = eingabe.nextDouble(); // eingabe.nextDouble();

                                System.out.println("Englisch Note " + k + ": ");
                                english[k] = eingabe.nextDouble(); // eingabe.nextDouble();
                                System.out.println("Aufrufprobleme");

                                //Problem hier:
                                //zensur[studentenindex - 1].setNoten(mathe[k], programmieren[k], english[k]);

                            }

                        }
                    } else
                        System.out.println("Noch kein Student angelegt");

                    break;

                case 3:

                }
            } else {
                System.out.println("Error: Zahl muss zwischen 1 und 3 liegen oder 9 zum Beenden");
            }
        } while (menusteuerung != 9);
        System.out.println("Programm erfolgreich beendet!");

    }

//    Ausgabe Menüansicht:
    public static void menueansicht() {
        System.out.println(" \t _______________________________________");
        System.out.println("\t|\t\t\t\t\t|");
        System.out.println(" \t|  Student anlegen:\tPress:\t1\t|");
        System.out.println(" \t|  --------:\t\tPress:\t2\t|");
        System.out.println(" \t|  --------:\t\tPress:\t3\t|");
        System.out.println(" \t|  --------:\t\tPress:\t4\t|");
        System.out.println(" \t|  --------:\t\tPress:\t5\t|");
        System.out.println(" \t|  Beenden:\t\tPress:\t9\t|");
        System.out.println(" \t|_______________________________________|");

    }

//    Daten einlesen für Studenten
    public static void setHochschulangehoeriger() {
        student[studentenindex] = new Hochschulangehoeriger();
        System.out.println("Studentenvorlage erstellt unter dem Index:" + studentenindex);
        System.out.println("Sollen direkt Daten angelegt werden?");
        System.out.println("Für 'Nein' drücke 0,Für 'Ja' drücke 1");
        int auswahl = eingabe.nextInt();

        if (auswahl == 1) {

            eingabe ein = new eingabe();
            System.out.println("Eingabe der Daten des Studenten");
            System.out.println("==========================");

            String vorname = ein.eingString("Vorname:\t\t");
            String nachname = ein.eingString("Nachname:\t\t");
            String geschlecht = ein.eingString("Geschlecht:\t\t");
            int alter = ein.eingInt("Alter: (Int)\t\t");
            String straße = ein.eingString("Straße:\t\t\t");
            int hausnummer = ein.eingInt("Hausnummer: (Int)\t");
            String postleitzahl = ein.eingString("Postleitzahl:\t\t");
            String stadt = ein.eingString("Stadt\t\t\t");
            String land = ein.eingString("Land:\t\t\t");
            System.out.println("Festlegen der studentenbezogenen Daten");
            String rang = ein.eingString("Rang:\t\t\t");
            String berufsbezeichnung = ein.eingString("Rang:\t\t\t");
            int nummer = ein.eingInt("Matrikelnummer: (Int)\t");
            int gehalt = ein.eingInt("Hausnummer: (Int)\t");

            student[studentenindex].setKontakt(vorname, nachname, geschlecht, alter);
            student[studentenindex].setAnschrift(straße, hausnummer, postleitzahl, stadt, land);
            student[studentenindex].setstudentendaten(rang, berufsbezeichnung, nummer, gehalt);

        } else {
            System.out.println("Keine Daten festgelegt");
        }

    }

}

Java:
public class Person {

//    Variablen
    String vorname;
    String nachname;
    String geschlecht;
    int alter;
    String strasse;
    int hausnummer;
    String plz;
    String stadt;
    String land;

//    Konstruktor
    public Person(String vorname, String nachname, String geschlecht, int alter, String strasse, int hausnummer, String plz, String stadt, String land) {
        this.vorname = vorname;
        this.nachname = nachname;
        this.geschlecht = geschlecht;
        this.alter = alter;
        this.strasse = strasse;
        this.hausnummer = hausnummer;
        this.plz = plz;
        this.stadt = stadt;
        this.land = land;
    }

    public Person() {

    }

    public void setKontakt(String vorname, String nachname, String geschlecht, int alter) {
        this.vorname = vorname;
        this.nachname = nachname;
        this.geschlecht = geschlecht;
        this.alter = alter;
    }

    public void setAnschrift(String strasse, int hausnummer, String plz, String stadt, String land) {
        this.strasse = strasse;
        this.hausnummer = hausnummer;
        this.plz = plz;
        this.stadt = stadt;
        this.land = land;
    }

//    Datenaenderung, ruft verschiedene Methoden auf, um gewisse Daten abzuändern.
    public void datenaenderung() {

        System.out.println("Welches Attribut soll abgeändert werden?");
        namenaenderung("Guiseppe");
    }

    public void namenaenderung(String vorname) {
        this.vorname = vorname;
    }

    public String fullData() {
        return (vorname + " " + nachname + " " + geschlecht + " " + alter + " " + strasse + " " + hausnummer + " " + plz
                + " " + stadt + " " + land);
    }

}

Java:
public class Hochschulangehoeriger extends Person {

    String rang;
    String berufsbezeichnung;
    int nummer;
    int gehalt;


    public Hochschulangehoeriger(String vorname, String nachname, String geschlecht, int alter, String strasse,
            int hausnummer, String plz, String stadt, String land, String rang, String berufsbezeichnung, int nummer,
            int gehalt) {
//        Aufruf des konstruktors der Oberklasse
        super(vorname, nachname, geschlecht, alter, strasse, hausnummer, plz, stadt, land);
        this.rang = rang;
        this.berufsbezeichnung = berufsbezeichnung;
        this.nummer = nummer;
        this.gehalt = gehalt;

    }

    public Hochschulangehoeriger() {

    }

    public void setstudentendaten(String rang, String berufsbezeichnung, int nummer, int gehalt) {
        this.rang = rang;
        this.berufsbezeichnung = berufsbezeichnung;
        this.nummer = nummer;
        this.gehalt = gehalt;

    }


    public String printAll() {
        return (fullData() + " " + rang + " " + berufsbezeichnung + " " + nummer + " " + gehalt);

    }

    public String printInfo() {
        return ("Vorname:\t" + vorname + "\nNachname:\t" + nachname + "\nMatrikelnummer:\t" + nummer);

    }



}

Java:
public class Notenverwaltung {

    double[] mathe;
    double[] programmieren;
    double[] english;
    double durchschnitt;

    Notenverwaltung(double[] mathe, double[] programmieren, double[] english) {

        this.mathe = mathe;
        this.programmieren = programmieren;
        this.english = english;

    }

    public void setNoten(double[] mathe, double[] programmieren, double[] english) {

        this.mathe = mathe;
        this.programmieren = programmieren;
        this.english = english;

    }

    public double rechnen(double mathe[], double programmieren[], double english[]) {

        System.out.println("Noch nichts");

        return durchschnitt;

    }

}

Meine Überlegung ist, dass ich doch vom jeweiligen Studentenindex die Funktion aufrufen muss, damit diese an der selben Stelle, wie der jeweilige Student aufgerufen wird.
Daher:
Java:
//zensur[studentenindex - 1].setNoten(mathe[k], programmieren[k], english[k]);
Eben eingefallen, es müsste natürlich der Aufruf an der Stelle j anstatt "Studentenindex" erfolgen.
Daher-->
Java:
//zensur[studentenindex - 1].setNoten(mathe[k], programmieren[k], english[k]);
und meine weitere Überlegung ist, dass jeweils die Note an der Stelle k überreicht werden soll.
Gibt es bis dorthin Denkfehler?
Ich sehe, dass ich meine Schleife sowieso nochmal überdenken muss, speziell sobald 2 Studenten angelegt sind. Aber würde mich freuen, wenn mir trotzdem jemand weiterhilft bezüglich meines Aufrufproblemes :)
 
Meine kleinen Tests haben ergeben, dass ich momentan überhaupt keine Funktion aus der Klasse Notenverwaltung aufrufen kann, als Meldung kommt:
java.lang.NullPointerException
 
mal nebenbei: mach bitte bei einer neuen Frage auch ein neues Thema auf und hänge es NICHT an eine altes dran!!
VG Klaus
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben