importieren von selbst definierten klassen

J

joe7210

Gast
hallo,

ich habe eine kurze frage:

ich muss in meinem demoprogramm dem konstruktor einen stringnode übergeben.
ich habs so versucht:

String abc;
StringNode xyz = new StringNode(abc);
LinkedStringList ghi = new LinkedStringList(xyz);

aber dann schreit der compiler: "cannot find variable stringnode".
wie kann ich das problem lösen?

Java:
private StringNode list;

public LinkedStringList(StringNode n){
	list = n;
	counter = 1;
	}

private class StringNode{
		String data;
		StringNode link;
		StringNode(){}
		StringNode(String s, StringNode n){
			data = s;
			link = n;
		}
	}
 

diggaa1984

Top Contributor
aber was mir grad auffällt ..

Java:
String abc;
StringNode xyz = new StringNode(abc);
LinkedStringList ghi = new LinkedStringList(xyz);

du rufst nen Konstruktor der StringNode-Klasse auf, der gar nicht existiert .. weiterhin stellt sich die Frage, wo diese Zeilen ausgeführt werden => mehr Code nötig
 
J

Joe7210

Gast
das ist der code der gesamte klasse:
Java:
public class LinkedStringList implements StringList{

	private StringNode list;
	private int counter = 0;
	
	public LinkedStringList(){
	}	
	public LinkedStringList(StringNode n){
	list = n;
	counter = 1;
	}	
	public void add(String s){
		list = new StringNode(s,list);
		counter++;
	}	
	public void removeFirst(){
		list = list.link;
		counter--;
	}	
	public int nrOfElems(){
		return counter;
	}
	private class StringNode{
		String data;
		StringNode link;
		StringNode(){}
		StringNode(String s, StringNode n){
			data = s;
			link = n;
		}
	}
}
und hier das demoprogramm:
Java:
public class Bsp02{
	public static void main(String[] args){
	
	String choice;
	String wort;
	
	int size;
	char wahl;
	
	System.out.println("Geben Sie die Art(linked, array) der Liste an, die Sie erstellen wollen.");
	choice = SavitchIn.readLine();
	if(choice == "linked"){
		System.out.println("Geben Sie die ersten Inhalt der Liste ein.");
		wort = SavitchIn.readLine();
		StringNode inhalt = new StringNode(wort);
		LinkedStringList mylist = new LinkedStringList(inhalt);		
	do{	
		System.out.println("Was wollen Sie als nächstes machen?");
		System.out.println("Inhalt (h)izufuegen.");
		System.out.println("Inhalt (r)eduzieren.");
		System.out.println("Inhalt (a)nzeigen.");
		System.out.println("Anzahl der Elemente an(z)eigen.");
	
		wahl = SavitchIn.readLineNonwhiteChar();
	
		if(wahl == 'h'){
			System.out.println("Geben Sie den zu hinzufuegenden Inhalt ein.");
			String word = SavitchIn.readLine();
			mylist.add(word);
		}
		else if(wahl == 'r')
			mylist.removeFirst();
	
		//else if(wahl == 'a')
			//mylist.giveIterator();
	
		else if(wahl == 'z')
			mylist.nrOfElems();
	}
	while(wahl == 'h' || wahl == 'r' || wahl == 'a' || wahl == 'z');
	}
	
}

die fehlermeldung: sorry, es war nicht variable sondern symbol, das er nicht gefunden hat:

cannot find symbol
symbol: class stringnode
location: class bsp02
stingnode inhalt = new stringnode(wort);

ich merk selbst grad, dass die fehlermeldung wegen des nicht vorhandenen konstruktors kommt, allerdings weiß ich nicht, wie ich sonst dem anderen konstruktor einen stringnode übergeben könnte.
 

diggaa1984

Top Contributor
generell würde ich ein derartiges vorgehen empfehlen:

die Liste als solches weiss am besten wie sie ihre Daten speichern möchte, in deinem Fall mit Hilfe von StringNode-Objekten. Die Klasse private innerhalb der Klasse LinkedStringList zu deklarieren ist dazu völlig in Ordnung, denn nirgendwo sonst brauchst du einen Zugriff auf diese Klasse. Wenn du nun Daten in der Liste ablegen willst, so brauchst du auch nur diese Daten und keine Objekte, welche die Daten beinhalten (StringNode), an die Liste übergeben. Die Liste packt diese Daten selbstständig in ein StringNode-Objekt.

Somit fallen alle StringNode-Referenzen ausserhalb der Listenklasse weg. Die Liste stellt lediglich Methoden bereit mit denen du die Daten hinzufügen, löschen, .. kannst. In deinem Fall wären das einfache String-parameter.

Die Liste ist anfangs leer, das bedeutet du benötigst auch nicht zwingend einen Konstruktor der die ersten Daten erhält. Mittels der üblichen add-Methode wird die Liste gefüllt.

Ist natürlich nun die Frage, welche Vorgaben du einhalten sollst (interface StringList, oder dergleichen)
 
Zuletzt bearbeitet:
J

Joe7210

Gast
ok, dann nehm ich nur den default-konstruktor.

das ist die vorgabe:

public interface StringList {
void add(String s); // fuegt s vorn hinzu
void removeFirst(); // loescht erstes Element; requires nrOfElems > 0
int nrOfElems(); // Anzahl Elemente
StringListIterator giveIterator(); // liefert Iterator; Durchlauf vom ersten zum letzten Element
}

public interface StringListIterator {
boolean hasNext(); // true gdw es git ein weiters Element
String getNext(); // liefert naechstes Element; requires hasNext()
}

dann hab ich noch ne frage zu dem stringlistiterator.

im ersten interface wird der ja gefordert. jetzt hab ich nur das problem, dass ich ja für das zweite interface die methoden in einer eigenen klasse definieren muss. allerdings kennt der compiler ja die liste nicht, die ich in der klasse für das erste interface definiert habe.

tut mir leid für die trivialen fragen, aber wir haben erst vor kurzem mit dem interfaces angefangen und ich kenn mich deswegen nicht so gut damit aus :)
 

diggaa1984

Top Contributor
den iterator kannst du genauso wie deine StringNode-Klasse als private Klasse einbinden, damit hat sie Zugriff auf nötige Elemente

Java:
public class LinkedStringList implements StringList {
 
    ...

    private class StringNode {

        ...
    }

    private class LinkedStringListIterator implements StringListIterator {
    
        ...
    }
}
 
J

Joe7210

Gast
ok. eine letzte frage noch:

was geb ich der methode "giveIterator" als return-wert?

Java:
public StringListIterator giveIterator(){
		//return ???;
	}
	
	private class Iterator implements StringListIterator{
	
		public boolean hasNext(){
		if(counter != 0){
		do{list = list.link;
		}
		while(list.link != null);
			return list == null;
		}
		else
			return list == null;
		}
		
		public String getNext(){
			while(hasNext())
				return list.data;
		}
	}
 
J

Joe7210

Gast
oh, ich seh grad, dass meine bool'sche variable den falschen rückgabewert für die methode "hasNext" gibt.

aber das ändert ja nix an der frage.
 

diggaa1984

Top Contributor
also ich würde die Klasse nicht Iterator nennen, da es bereits ein interface in java gibt, was so heisst.

an sich würde die methode so aussehen
Java:
public StringListIterator giveIterator() {
    return new LinkedStringListIterator();
}

innerhalb der Iterator-Implementierung hast du dann alles weitere, was nötig ist.

generell:

hasNext: schaut nach ob dem aktuellen Datenelement noch ein weiteres folgt

getNext: liefert genau das folgende Datenelement

da sind keine schleifen nötig
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Wie kann ich eine Methode einer selbst erstellten Klasse statisch importieren? Java Basics - Anfänger-Themen 5
D maven dependencies re-importieren in intellij Java Basics - Anfänger-Themen 5
D importieren eigener Klassen Java Basics - Anfänger-Themen 12
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
Dimax In Java File (nicht in Java Projekt) mysql Driver importieren Java Basics - Anfänger-Themen 3
O Problem mit SOAP / javax.xml importieren Java Basics - Anfänger-Themen 7
H Eclipse Git importieren Java Basics - Anfänger-Themen 2
M Erste Schritte Importieren funktioniert nicht Java Basics - Anfänger-Themen 7
F (Eclipse) Beim importieren etwas fehlerhaft bitte um Hilfe :) Java Basics - Anfänger-Themen 3
S Importieren einer Textdatei Java Basics - Anfänger-Themen 2
W Externe class in Eclipse importieren Java Basics - Anfänger-Themen 0
A Reader für Benutzereingabe in Eclipse importieren Java Basics - Anfänger-Themen 3
S Klassen Class mit Funktionen importieren Java Basics - Anfänger-Themen 1
J javaproject von github importieren? Java Basics - Anfänger-Themen 6
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
JavaNewbie2.0 Strings in andere Klassen importieren. Java Basics - Anfänger-Themen 2
H Variable einer anderen Klasse importieren Java Basics - Anfänger-Themen 2
F Daten aus Excel-Tabelle in Java importieren Java Basics - Anfänger-Themen 15
N Eclipse Source importieren ohne Link Java Basics - Anfänger-Themen 3
D Klassen MediaPlayer Klasse importieren Java Basics - Anfänger-Themen 2
G eigene Bibliothek in Java importieren Java Basics - Anfänger-Themen 5
T Scanner lässt sich nicht importieren Java Basics - Anfänger-Themen 1
N Fehler beim importieren vom package Java Basics - Anfänger-Themen 2
E Ardublock in Eclipse Luna importieren Java Basics - Anfänger-Themen 0
E Externe Library .zip Datei importieren Java Basics - Anfänger-Themen 3
A Dinge lassen sich nicht importieren Java Basics - Anfänger-Themen 7
J Daten aus zweiter Klasse importieren Java Basics - Anfänger-Themen 33
Q Importieren meiner Boundary? Bitte Hilfe Java Basics - Anfänger-Themen 3
F Input/Output Daten importieren und Exportieren Java Basics - Anfänger-Themen 2
N Importieren Java Basics - Anfänger-Themen 13
J Eclipse + Java + Packages importieren Java Basics - Anfänger-Themen 7
M Klasse importieren ohne Paket Java Basics - Anfänger-Themen 2
G Projekte importieren und andere Fragen Java Basics - Anfänger-Themen 3
J Zugriff auf Variable vom typ (default) durch Importieren des Packages? Java Basics - Anfänger-Themen 5
U Klassen Eigene Klassen importieren Java Basics - Anfänger-Themen 13
S Library importieren in Eclipse Java Basics - Anfänger-Themen 9
Paristick Projekt importieren, jniregistry Java Basics - Anfänger-Themen 2
D Java-Projekte importieren Java Basics - Anfänger-Themen 6
G jar ( H2 ) importieren Java Basics - Anfänger-Themen 3
C gif in Eclipse importieren und exportieren Java Basics - Anfänger-Themen 12
D Importieren von bestimmten Quellen Java Basics - Anfänger-Themen 13
pindakaas Klassen Importieren Java Basics - Anfänger-Themen 7
D Ordner in Eclipse Importieren Java Basics - Anfänger-Themen 6
E Klasse importieren Java Basics - Anfänger-Themen 4
H OOP Klassen importieren Java Basics - Anfänger-Themen 3
J Subklasse soll alle Klassen/Pakete der Superklasse importieren Java Basics - Anfänger-Themen 3
M Importieren von "IO.class" unter Eclipse Java Basics - Anfänger-Themen 4
S Importieren funktioniert nicht Java Basics - Anfänger-Themen 10
M Serializable - Bei Update ältere Daten importieren Java Basics - Anfänger-Themen 14
I Importieren Java Basics - Anfänger-Themen 2
N methoden einzeln importieren oder * nehmen? Java Basics - Anfänger-Themen 33
manunana89 Substance richtig importieren??? Java Basics - Anfänger-Themen 3
M Packet importieren Java Basics - Anfänger-Themen 9
A Klasse importieren wenn 2 mal gleicher Name Java Basics - Anfänger-Themen 2
D packages importieren Java Basics - Anfänger-Themen 3
G jar importieren Java Basics - Anfänger-Themen 3
Gama Importieren von Klassen [Anfängerfrage] Java Basics - Anfänger-Themen 3
G Class Getopts <-- Wie kann ich diese Class importieren Java Basics - Anfänger-Themen 1
G Sortierverfahren importieren Java Basics - Anfänger-Themen 2
N Importieren von Wörtern aus Datei als Array von Strings Java Basics - Anfänger-Themen 2
G String Array importieren ? Java Basics - Anfänger-Themen 10
G mit "page" in JSP importieren Java Basics - Anfänger-Themen 13
R Java-Klasse importieren Java Basics - Anfänger-Themen 12
S Klasse importieren Java Basics - Anfänger-Themen 9
M Importieren einer Javadatei aus einem anderen Verzeichnis Java Basics - Anfänger-Themen 4
B hp-daten in programm importieren Java Basics - Anfänger-Themen 4
T Klassen importieren Java Basics - Anfänger-Themen 13
J Anfängerfrage: wie externe Dateien importieren? Java Basics - Anfänger-Themen 5
G importieren von pakete Java Basics - Anfänger-Themen 11
O String nur importieren wenn nur zahlen da sind? Java Basics - Anfänger-Themen 7
S Klasse importieren Java Basics - Anfänger-Themen 4
N Porblem mit dem Importieren eigener Pakete Java Basics - Anfänger-Themen 4
P Eigene Package importieren? (Eclipse) Java Basics - Anfänger-Themen 6
B Namespace importieren? Java Basics - Anfänger-Themen 3
K Mit POI-HSSF Diagramme aus XLS- Importieren Java Basics - Anfänger-Themen 2
G Probleme mit importieren: The Import Jama cannot be resolved Java Basics - Anfänger-Themen 23
T Packages erstellen und importieren? Java Basics - Anfänger-Themen 10
G neues Paket importieren Java Basics - Anfänger-Themen 2
J Variable aus anderer Klasse importieren Java Basics - Anfänger-Themen 6
D Variable importieren ? Java Basics - Anfänger-Themen 3
N *.jar erstellen & library importieren? Java Basics - Anfänger-Themen 5
U Liste importieren und für weitere Verwendung sichern Java Basics - Anfänger-Themen 4
M Paket aus beliebigem Verzeichnis importieren Java Basics - Anfänger-Themen 9
A problem: importieren von eigenen klassen Java Basics - Anfänger-Themen 3
P Problem: Kann keine externen Pakete importieren Java Basics - Anfänger-Themen 11
N Java2me Pakete importieren Java Basics - Anfänger-Themen 2
S Importieren in Packages Java Basics - Anfänger-Themen 11
D Eigene Klassen importieren Java Basics - Anfänger-Themen 9
G importieren von IOTools Java Basics - Anfänger-Themen 2
L Eigene Packages importieren Java Basics - Anfänger-Themen 2
A Public/Private und wie importieren? Java Basics - Anfänger-Themen 13
M Rest mit Spring boot oder selbst anlegen Java Basics - Anfänger-Themen 14
B Hotkeys selbst definieren? Java Basics - Anfänger-Themen 1
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
J selbst erstellte Datei mit Programm öffnen Java Basics - Anfänger-Themen 10
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
CptK Generics: Klassen die Interface implementieren, aber selbst nicht das Interface sind Java Basics - Anfänger-Themen 8
ruutaiokwu Bluetooth-Zugriff, braucht es dazu plattformabhängige Libraries oder kann das Java mittlerweile selbst? Java Basics - Anfänger-Themen 10
I Klasse selbst fortlaufend nummerieren lassen Java Basics - Anfänger-Themen 11
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben