Hi,
ich stehe vor folgender Aufgabe und brauche ein paar Tipps:
In nahezu jedem Lehrbuch finden Sie im hinteren Teil so genannte Indexe bzw. Sachwortverzeichnisse. Hier werden wichtige Begriffe, die im Buch vorkommen, sowie die jeweiligen Seitenzahlen, auf denen die Begriffe vorkommen, aufgelistet.
Implementieren Sie eine ADT-Klasse Index, die einen solchen Index repräsentiert. Die Klasse soll folgende Methoden zur Verfügung stellen:
-Einen Default-Konstruktor, der einen leeren Index erstellt.
-Einen Copy-Konstruktor; der neue Index soll dabei alle Einträge enthalten, die der als Parameter übergebene Index zum Zeitpunkt des Aufrufs enthält.
-Eine Methode hinzufuegen, die einen Begriff (String) sowie eine Seitenzahl (int-Wert) als Parameter übergeben bekommt und die den Begriff mit der Seitenzahl im Index vermerkt. Dabei gilt: Begriffe dürfen nicht mehrfach im Index vorkommen und zu jedem Begriff darf eine Seitenzahl höchstens einmal im Index vorkommen.
-Eine Methode toString, die eine String-Repräsentation des aktuellen Index liefert (Überschreiben der von der Klasse Object geerbten Methode toString). Die String-Repräsentation soll dabei folgendermaßen aufgebaut
sein: Für jeden im Index vermerkten Begriff soll der String jeweils eine Zeile der folgenden Form enthalten: <begriff>: <seitenzahl 1> <seitenzahl 2> … <seitenzahl n> (also bspw.: Hamster: 2 45 123)
Hinweis:
Beachten Sie, dass die Anzahl an Begriffen des Index nicht beschränkt ist. Dasselbe gilt für die Anzahl der Seitenzahlen pro Begriff. Setzen Sie statt Arrays also die Klasse java.util.ArrayList ein.
Freiwilliger Zusatz:
Geben sie sowohl die Einträge des Index als auch die Seitenzahlen sortiert aus (lexikographische bzw. natürliche Ordnung der Begriffe bzw. der Seitenzahlen). Suchen Sie im JDK nach geeigneten Klassen bzw. Methoden zum Sortieren.
Testen:
Ob Ihre Klasse (zumindest teilweise) korrekt ist, können Sie testen, indem Sie das folgende Testprogramm ausführen:
Bisher hab ich folgendes erarbeitet:
Mein erstes Problem ist, dass die Begriffe + Seite nicht zum Index hinzugefügt werden.
Wenn ich das Testprogramm ausführe, bekomme ich als Ausgabe:
null : 0
null : 0
Woran liegt es, dass die Begriffe nicht zum Index hinzugefügt werden?
Das die Methode neuerIndex und toString noch nicht funktionieren ist mir bewusst, aber als erstes möchte ich, dass die Dinge zum Index hinzugefügt werden können.
Freundliche Grüße
Christoph
ich stehe vor folgender Aufgabe und brauche ein paar Tipps:
In nahezu jedem Lehrbuch finden Sie im hinteren Teil so genannte Indexe bzw. Sachwortverzeichnisse. Hier werden wichtige Begriffe, die im Buch vorkommen, sowie die jeweiligen Seitenzahlen, auf denen die Begriffe vorkommen, aufgelistet.
Implementieren Sie eine ADT-Klasse Index, die einen solchen Index repräsentiert. Die Klasse soll folgende Methoden zur Verfügung stellen:
-Einen Default-Konstruktor, der einen leeren Index erstellt.
-Einen Copy-Konstruktor; der neue Index soll dabei alle Einträge enthalten, die der als Parameter übergebene Index zum Zeitpunkt des Aufrufs enthält.
-Eine Methode hinzufuegen, die einen Begriff (String) sowie eine Seitenzahl (int-Wert) als Parameter übergeben bekommt und die den Begriff mit der Seitenzahl im Index vermerkt. Dabei gilt: Begriffe dürfen nicht mehrfach im Index vorkommen und zu jedem Begriff darf eine Seitenzahl höchstens einmal im Index vorkommen.
-Eine Methode toString, die eine String-Repräsentation des aktuellen Index liefert (Überschreiben der von der Klasse Object geerbten Methode toString). Die String-Repräsentation soll dabei folgendermaßen aufgebaut
sein: Für jeden im Index vermerkten Begriff soll der String jeweils eine Zeile der folgenden Form enthalten: <begriff>: <seitenzahl 1> <seitenzahl 2> … <seitenzahl n> (also bspw.: Hamster: 2 45 123)
Hinweis:
Beachten Sie, dass die Anzahl an Begriffen des Index nicht beschränkt ist. Dasselbe gilt für die Anzahl der Seitenzahlen pro Begriff. Setzen Sie statt Arrays also die Klasse java.util.ArrayList ein.
Freiwilliger Zusatz:
Geben sie sowohl die Einträge des Index als auch die Seitenzahlen sortiert aus (lexikographische bzw. natürliche Ordnung der Begriffe bzw. der Seitenzahlen). Suchen Sie im JDK nach geeigneten Klassen bzw. Methoden zum Sortieren.
Testen:
Ob Ihre Klasse (zumindest teilweise) korrekt ist, können Sie testen, indem Sie das folgende Testprogramm ausführen:
Java:
package Uebungszettel09;
class IndexTest {
public static void main(String[] args) {
Index index = new Index();
index.hinzufuegen("Objekt", 1);
index.hinzufuegen("Objekt", 15);
index.hinzufuegen("Objekt", 3);
index.hinzufuegen("Objekt", 15);
Index index2 = new Index(index);
index.hinzufuegen("Objekt", 17);
index.hinzufuegen("Hamster", 45);
index.hinzufuegen("Hamster", 2);
index.hinzufuegen("Hamster", 199);
index.hinzufuegen("Hamster", 45);
System.out.println(index);
System.out.println(index2);
}
}
Bisher hab ich folgendes erarbeitet:
Java:
package Uebungszettel09;
import java.util.ArrayList;
public class Index {
String begriff = new String();
int seite;
ArrayList<String> index = new ArrayList<>();
//Default Konstruktor
public Index() {
this.begriff = null;
this.seite = 0;
}
// Konstruktor
public Index(String begriff, int seite) {
this.begriff = begriff;
this.seite = seite;
}
// Copy-Konstruktor
public Index(Index i) {
this.begriff = i.begriff;
this.seite = i.seite;
this.index = i.index;
}
// Neuen Index im Index erstellen
public Index(ArrayList neuerIndex) {
neuerIndex.add(this.index);
}
// Begriff und Seite zum Index hinzufügen
// Solange der Begriff nicht bereits in der List ist
public void hinzufuegen(String begriff, int seite) {
if (!this.index.contains(this.begriff)) {
this.index.add(this.begriff + ":" + this.seite);
}
}
@Override
public String toString() {
return this.begriff + ": " + this.seite;
}
}
Mein erstes Problem ist, dass die Begriffe + Seite nicht zum Index hinzugefügt werden.
Wenn ich das Testprogramm ausführe, bekomme ich als Ausgabe:
null : 0
null : 0
Woran liegt es, dass die Begriffe nicht zum Index hinzugefügt werden?
Das die Methode neuerIndex und toString noch nicht funktionieren ist mir bewusst, aber als erstes möchte ich, dass die Dinge zum Index hinzugefügt werden können.
Freundliche Grüße
Christoph