So, nun wird mir doch alles zu kompliziert;rtfm:
Ich hab jetzt schon viel gegooglet und herumgesucht aber kaum etwas befriedigendes gefunden.
Es geht nun also um folgendes:
ich habe eine Klasse FiniteList, die Methoden definiert, mit denen man ein String-Array bearbeiten kann (z.B. Wörter hinzufügen und auch wieder löschen).
Diese Klasse möchte ich nun testen, aber sobald ich ein Wort hinzufügen will, bekomme ich diese NullPointerException.
Ich bin mir auch bereits ziemlich sicher, dass es damit zusammenhängt, dass ic hvorher überprüfe ob im Array überhaupt noch ein Platz ist.
Kann mir jemand helfen??:bahnhof:
Ich hab jetzt schon viel gegooglet und herumgesucht aber kaum etwas befriedigendes gefunden.
Es geht nun also um folgendes:
ich habe eine Klasse FiniteList, die Methoden definiert, mit denen man ein String-Array bearbeiten kann (z.B. Wörter hinzufügen und auch wieder löschen).
Diese Klasse möchte ich nun testen, aber sobald ich ein Wort hinzufügen will, bekomme ich diese NullPointerException.
Ich bin mir auch bereits ziemlich sicher, dass es damit zusammenhängt, dass ic hvorher überprüfe ob im Array überhaupt noch ein Platz ist.
Kann mir jemand helfen??:bahnhof:
Java:
public class FiniteList {
//-----------------------------------------Instanzvariablen
int laenge;
boolean isFull = true;
String[] liste;
//-------------------------------------------------Methoden
// Konstruktor ohne Eingabe einer Länge
public FiniteList() {
laenge = 10;
String[] liste = new String[laenge];
}
// Konstruktor, wo Benutzer seine Länge eingegeben hat
public FiniteList(int n) {
if (n>0) {
laenge = n;
String[] liste = new String[laenge];
}
else {
System.out.println("Kann kein Objekt erzeugen.");
}
}
// fuegt s an erster freier Stelle ein; requires nicht voll
public void add(String s) {
if (isFull()==false) {
for (int i = 0; i < 10; i ++) {
if (liste[i] == null) {
liste[i] = s;
break; // Sobald ein leeres Feld gefunden wurde, wird dieses blegt und die Schleife soll abbrechen (nur einmal belegen!)
}
}
}
else {
System.out.println("Array ist schon voll!");
}
}
// entfernt (ein Vorkommen von) s, falls vorhanden, sonst wirkungslos;
public void remove(String s) {
for (int i = 0; i < 10; i ++) {
if (liste[i].equals(s)) {
liste[i] = null;
}
}
}
public boolean isFull() { // prueft ob Liste voll
for (int i = 0; i < 10; i++) {
if (liste[i] == null) {
isFull = false;
}
}
return isFull;
}
public void display() { // druckt alle Strings in Liste; neue Zeile für jeden Eintrag
int i = 0;
while (liste[i] != null && i < 10){
System.out.println(liste[i]);
i++;
}
}
}
Java:
public class Bsp19 {
public static void main(String[] args) {
int laenge = 1;
char choice;
String s;
// Erzeuge Array-Liste;
System.out.println("Wollen Sie eine Länge für die Liste bestimmen? Geben Sie eine Zahl oder 0 ein, wenn die Länge automatisch bestimmt werden soll.");
laenge = SavitchIn.readInt();
FiniteList list = null;
if (laenge != 0) {
list = new FiniteList(laenge);
}
else {
list = new FiniteList();
}
System.out.println("Um die Liste nun mit einem Wort zu befuellen geben Sie a(dd) ein.");
System.out.println("Um ein Wort wieder zu loeschen geben Sie r(emove) ein.");
System.out.println("Um sich die gesamte Liste anzeigen zu lassen geben Sie d(isplay) ein.");
System.out.println("Um das Bearbeiten des Arrays abzuschliessen geben Sie e(nde) ein. Der Stand der Liste wird dann noch einmal ausgegeben.");
do {
choice = SavitchIn.readLineNonwhiteChar();
if (choice == 'a') {
System.out.println("Welches Wort moechten Sie der Liste hinzufuegen?");
s = SavitchIn.readLine();
list.add(s);
}
else if (choice == 'r') {
System.out.println("Welches Wort moechten Sie von der Liste loeschen?");
s = SavitchIn.readLine();
list.remove(s);
}
else if (choice == 'd') {
list.display();
}
}
while (choice != 'e');
list.display();
}
}
Zuletzt bearbeitet: