Zu viele Verkettungen von Klassen

Mr.GreenTea

Mitglied
Hallo alle zusammen,

Ich hab keine Ahnung, wie ich mein Problem in einen Titel bringen soll, noch welches Präfix ich anhängen muss.

Wir sollen momentan ein Mitarbeiterverwaltungsprogramm schreiben. Wobei wir vier Klassen haben.

Bevor ich den Code poste. Die meisten Methoden in den Klassen werden bis jetzt noch nicht verwendet. Es geht mir lediglich darum, dass ich in der Klasse "Aufgabe" pv.listMitarbeiter(size) durchführen will. Nun soll mir das Programm dieses "size" über "PersonalVerwaltung" zur "MitarbeiterListe" bringen und dort mit Hilfe einer For-Schleife und der toString-Methode im Objekt "Mitarbeiter" die drei eingespeicherten Mitarbeiter ausgeben. Ich hoffe soweit verständlich :D

[Java]import java.util.Scanner;


public class Aufgabe {

public static void main(String[] args) {

System.out.println("Größe des Arrays angeben: ");
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();

PersonalVerwaltung pv = new PersonalVerwaltung(size);
Mitarbeiter m1 = new Mitarbeiter("Josef Maier");
pv.addMitarbeiter(m1);
Mitarbeiter m2 = new Mitarbeiter("Franz Huber");
pv.addMitarbeiter(m2);
Mitarbeiter m3 = new Mitarbeiter("Werner Müller");
pv.addMitarbeiter(m3);
pv.listMitarbeiter(size);
}

}[/Java]

[Java]public class PersonalVerwaltung {

private int size;

public PersonalVerwaltung(int size)
{
this.size = size;
}

MitarbeiterListe ml = new MitarbeiterListe(size);

public void addMitarbeiter(Mitarbeiter m)
{
ml.add(m);
}

public void listMitarbeiter(int size)
{
ml.listMitarbeiter(size);
}
}[/Java]

[Java]import java.util.Scanner;

public class MitarbeiterListe {

private static int anz = 0;
private static int size;

public MitarbeiterListe(int size)
{
this.size = size;
}

Mitarbeiter[] liste = new Mitarbeiter[size];

public int getSize()
{
return anz;
}

public boolean add(Mitarbeiter m)
{
if(anz == size)
return false;

liste[anz++] = m;
return true;
}

public Mitarbeiter get(int Index)
{
if(Index < 1 || Index > anz)
return null;


else
return liste[Index];
}

public Mitarbeiter set(int Index, Mitarbeiter m)
{
if(liste[Index] == null)
return null;

else
{
liste[Index] = m;
return m;
}

}

public boolean remove(Mitarbeiter m)
{
for(int i = 0; i <= size; i++)
{
if(m.getId() == liste.getId())
{
liste = null;
return true;
}
}

return false;
}

public void listMitarbeiter(int size)
{
for(int i = 0; i < size; i++)
{
System.out.println(liste.toString());
}
}
}[/Java]

[Java]public class Mitarbeiter {

private int id = 0;
private String name;

public Mitarbeiter(String name)
{
setName(name);
setId();
}

public void Mitarbeiter(String name)
{
setName(name);
setId();
}

public void setId()
{
id++;
}

public void setName(String name)
{
this.name = name;
}

public String getName()
{
return name;
}

public int getId()
{
return id;
}

public String toString()
{
return "Name: " + name + "\t ID: " + id;
}
}[/Java]


Es is echt viel zu lesen, tut mir leid :p

Die Sache is nun die: Wenn ich das Programm starte, kommt folgender Fehler-Code:

Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
	at MitarbeiterListe.listMitarbeiter(MitarbeiterListe.java:70)
	at PersonalVerwaltung.listMitarbeiter(PersonalVerwaltung.java:22)
	at Aufgabe.main(Aufgabe.java:19)
 

anti-held

Bekanntes Mitglied
Zu deinem Code:

Wenn du nicht willst dass alle Mitarbeiterlisten immer die selbe Größe haben sollten deine Membervariablen
size und anz nicht statisch sein.

Dein Fehler tritt auf, weil das Mitarbeiter[], wenn du eine MitarbeiterListe erstellst, immer mit der Größe 0 initialisiert wird.
Denn [c] Mitarbeiter[] liste = new Mitarbeiter[size];[/c] wird noch vor deinem Konstruktor ausgeführt. (da ist die size aber noch null)

Problemlösung:
Java:
public class MitarbeiterListe {
    private int anz = 0;
    private final int size;
    Mitarbeiter[] liste;

    public MitarbeiterListe(int size)    {
        this.size = size;
        liste = new Mitarbeiter[size];
    }
    

    ...
 
Zuletzt bearbeitet:

Mr.GreenTea

Mitglied
Vielen Danke.

Ich hab mich heute mal zu nem anderen Professor in die Vorlesung gesetzt => wesentlich besser.
Bei dem haben wir heute gelernt, wieso man static und wann man public oder private nimmt.

Ich habe den Code jetzt geändert:

[Java]public class MitarbeiterListe {

private int anz = 0;
private final int size;
Mitarbeiter[] liste;

public MitarbeiterListe(int size)
{
this.size = size;
liste = new Mitarbeiter[size];
}

public int getSize()
{
return anz;
}

public boolean add(Mitarbeiter m)
{
if(anz == size)
return false;

liste[anz++] = m;
return true;
}

public Mitarbeiter get(int Index)
{
if(Index < 1 || Index > anz)
return null;


else
return liste[Index];
}

public Mitarbeiter set(int Index, Mitarbeiter m)
{
if(liste[Index] == null)
return null;

else
{
liste[Index] = m;
return m;
}

}

public boolean remove(Mitarbeiter m)
{
for(int i = 0; i <= size; i++)
{
if(m.getId() == liste.getId())
{
liste = null;
return true;
}
}

return false;
}

public void listMitarbeiter(int size)
{
System.out.println("Mitarbeiter");

for(int i = 0; i < size; i++)
{
System.out.println(liste.toString());
}
}
}[/Java]


Leider kommt immer noch die gleiche Fehlermeldung :(

Eine andere Frage: Für was verwende ich dieses final?
 
Zuletzt bearbeitet:

anti-held

Bekanntes Mitglied
Das final steht dafür, dass diese Variable eine Konstante ist.
Sie kann nicht nachträglich nochmal verändert werden.

Du brauchst in deiner listMitarbeiter keine size angeben.
Es reicht wenn du hier
Java:
            for(int i = 0; i < this.size; i++)
            {
                    System.out.println(liste[i]);
            }
verwendest.
z.B. du erstellst eine Liste mit der größe 5 und rufst dann darauf listMitarbeiter(6) auf,
wird dir diese Exception geworfen.

Wenn du das tust,
welche Exception wird denn dann noch geworfen?
 

diggaa1984

Top Contributor
Diese Methode, auch wenn noch nicht verwendet, sind ebenfalls fehlerhaft, denke ich mal
Java:
public Mitarbeiter get(int Index) {
    if(Index < 1 || Index > anz) {
        return null;
    } else {
        return liste[Index];
    }
}

public Mitarbeiter set(int Index, Mitarbeiter m) {
    if(liste[Index] == null) {
        return null;
    } else {
        liste[Index] = m;
        return m;
    }
}
Überlege noch einmal genau was du hier machen möchtest, und was hier gemacht wird
Weiterhin ist es nicht nötig anz UND size zu speichern, ausser du willst unbedingt maximale und aktuelle Größe seperat verwalten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Screenshots machen und zwar viele und speichern Java Basics - Anfänger-Themen 12
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
s_1895 zu viele Zeilen in der Main Methode Java Basics - Anfänger-Themen 4
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
P Nutzer entscheiden lassen, wie viele Zahlen dieser in ein Array eingeben möchte. Java Basics - Anfänger-Themen 6
S Hilfe : Unendlich viele Zufallszahlen erstellen? Java Basics - Anfänger-Themen 8
I Wie viele 1 an Bits hat die Zahl x? Java Basics - Anfänger-Themen 5
R Zu viele leere Parameter Java Basics - Anfänger-Themen 8
T Variablen Beliebig viele Arrays in Schleife erstellen Java Basics - Anfänger-Themen 1
M Aufgabe: Eine Klasse und viele Untermethoden Java Basics - Anfänger-Themen 30
D Klassen Doppelt so viele Elemente in Arraylist ? Java Basics - Anfänger-Themen 4
D zu viele MySQL Connections Java Basics - Anfänger-Themen 18
F Threads ftp4j, viele Dateien upload Java Basics - Anfänger-Themen 5
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Beliebig viele Rechtecke erzeugen Java Basics - Anfänger-Themen 5
N Beliebig viele parameter Java Basics - Anfänger-Themen 3
D Viele grafische unterschiede von Windows xp zu Windows 7 Java Basics - Anfänger-Themen 3
T unterschiedlich viele parameter übergeben Java Basics - Anfänger-Themen 5
T Zu viele Fenster - HILFE! Java Basics - Anfänger-Themen 5
Prafy Beliebig viele Arrays erstellen? Java Basics - Anfänger-Themen 2
J Methoden Beliebig viele Objekt-Eingabeparameter im Konstruktor Java Basics - Anfänger-Themen 6
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
G Erste Schritte Wie viele Montage gab es? Java Basics - Anfänger-Themen 14
M Input/Output Viele short aus Datei lesen und von Little Endian zu Big Endian umwandeln Java Basics - Anfänger-Themen 12
S Variablen viele Instanzvariablen vermeiden Java Basics - Anfänger-Themen 14
El_Lobo Methoden Zu viele Getter- und Settermethoden - geht das einfacher? Java Basics - Anfänger-Themen 3
L buffered reader produziert zu viele und seltsame zeichen Java Basics - Anfänger-Themen 2
D Erste Schritte Viele Objekte einer Klasse "verwalten" Java Basics - Anfänger-Themen 17
T Beliebig viele Werte in Array zwischenspeichern Java Basics - Anfänger-Themen 15
S Viele Fragen von einem Anfänger in Java Java Basics - Anfänger-Themen 2
F Viele Controller-Klassen Java Basics - Anfänger-Themen 5
P Datentypen extrem viele Fehler nur irgendwie seh ich den Grund ned... Java Basics - Anfänger-Themen 3
M Viele GUI-Variablen Java Basics - Anfänger-Themen 4
O Wie kann man das einfach lösen? (dynamisch viele Attribute) Java Basics - Anfänger-Themen 6
U JTable viele möglichkeiten, keine Lösung Java Basics - Anfänger-Themen 5
H Reflexion: Eine Methode, beliebig viele Parameter (Java 1.4.2) Java Basics - Anfänger-Themen 8
M Viele verschachtelte Schleifen Java Basics - Anfänger-Themen 14
Avalarion Erschaffung eines Shadowrun Charaktergenerators - Viele, Viele Fragen! Java Basics - Anfänger-Themen 6
S Viele Konstanten, EnumSet? Java Basics - Anfänger-Themen 3
S Stilfrage: Neue Klasse wenn es in einer Klasse zu viele Methoden gibt? Java Basics - Anfänger-Themen 14
Kasu So viele "_ " ausgeben, wie ein String lang ist Java Basics - Anfänger-Themen 4
I viele Dateinamen in ein String-Array mit File().list() Java Basics - Anfänger-Themen 4
mwildam Textfile lesen und schreiben - so viele Möglichkeiten Java Basics - Anfänger-Themen 5
U Zu viele werte in einer klasse Java Basics - Anfänger-Themen 4
K Viele Fragen eines Anfängers-Fließkommazahlen/Typenwandlung Java Basics - Anfänger-Themen 5
W Viele Objekte mit einem Konstrukor erzeugen Java Basics - Anfänger-Themen 10
R einfaches Programm, viele Probleme Java Basics - Anfänger-Themen 29
G viele zahlen mit wenig code Java Basics - Anfänger-Themen 4
X 1 MySQL-Verbindung und viele Threads Java Basics - Anfänger-Themen 4
E Viele Fragen Java Basics - Anfänger-Themen 8
J viele Objekte erzeugen Java Basics - Anfänger-Themen 21
J Große *.Text Datei zum verschicken in viele kleine Java Basics - Anfänger-Themen 7
O viele Name mit jeweils zugehörigen Status in .txt Speichern Java Basics - Anfänger-Themen 16
K ResultSet: Wie viele Rows beinhaltet es? Java Basics - Anfänger-Themen 6
X Viele Komponenten automatisch erzeugen Java Basics - Anfänger-Themen 2
C zu viele paint()'s. Java Basics - Anfänger-Themen 6
M Viele Textfelder auslesen Java Basics - Anfänger-Themen 3
P x-viele Variablen anlegen Java Basics - Anfänger-Themen 2
F Mit der Zahl n n-viele Arrays erstellen ?! Java Basics - Anfänger-Themen 4
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
M Anonyme Klassen - Warum wird in der Konsole nichts ausgegeben? Java Basics - Anfänger-Themen 1
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
C Array von Klassen Java Basics - Anfänger-Themen 2
monsterherz 2 Klassen daher Probs mit dem Dateinamen Java Basics - Anfänger-Themen 9
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
I JPA Query für mehrere Klassen Java Basics - Anfänger-Themen 3
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
S IntelliJ geht alle Klassen durch Java Basics - Anfänger-Themen 9
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
D Klassen Klassen Kommunikation Java Basics - Anfänger-Themen 12
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
L Best Practice Annotierte Klassen im Classpath herausfinden Java Basics - Anfänger-Themen 1
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
K Zweite Ausgabe von vererbten Klassen Java Basics - Anfänger-Themen 3
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
M Log4J (v2) nachträglich in allen Klassen hinzufügen Java Basics - Anfänger-Themen 9
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
W Wo ist der Wurm in meinem Grundverständnis von Klassen? Java Basics - Anfänger-Themen 22
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
elsaaaaaa Wochentag als String ausgeben mit JDK Klassen Java Basics - Anfänger-Themen 6
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
Z Mehtode bei Start des Programms ausführen (Klassen übergreifend) Java Basics - Anfänger-Themen 12
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
TimoN11 Java Klassen Global einbinden Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben