Pseudo-Stack (char[] stackArray) mit Zeichen aus einer .txt-Datei befüllen

Hedstücc

Mitglied
Hallo, ich freue mich auf eure Unterstützung 🙂

Zu lösen ist folgender Sachverhalt:
Es soll eine Klasse Stack definiert werden, in der es ein char[] stackArray und die int-Variable top gibt, welche als Stackpointer dienen soll (Verfahren hierbei soll dann LIFO sein)

Als public-Methoden sind vorzusehen:
- Konstruktor reserviert benötigten Speicher, setzt top auf -1
- void push(char) fügt ein Element hinzu
- char pop() löscht das oberste Element und liefert es zurück
- boolean isEmpty() prüft, ob der Stack leer ist
- boolean isFull() prüft, ob der Stack voll ist


Zu überprüfen sei, ob in einer .txt-Datei alle geschweiften, eckigen und runden Klammern korrekt gesetzt sind.
Dabei soll Zeichen für Zeichen aus der entsprechenden Datei in das stackArray gespeichtert werden, beziehungsweise soll das Zeichen überlesen oder gelöscht werden (Klammern speichern, Rest überlesen bzw. löschen)
Danach soll es möglich sein auszugeben ob die Klammern richtig gesetzt worden sind, falls nicht sollen Fehlermeldungen wie folgt ausgegeben werden:

Fehler in Zeile 10: Zu der Klammer ) existiert keine öffnende Klammer
Fehler in Zeile 20: Die Klammern { und ) passen nicht zueinander

Ich habe leider keine Erfahrung wie man Zeichen aus einer Datei liest und ggf. in ein char-array speichert, wie sich das Programm schlussendlich die Zeilen für Fehlermeldungen merken soll, stellt mich auch noch vor ein Rätsel

Ich bitte um eure Hilfe,
schonmal im Voraus Danke!
 
Zuletzt bearbeitet:
Wenn du bei Google "Java Datei Zeilenweise einlesen" eingibt, bekommst du mit Sicherheit hunderte von Beispielen.

Die eingelesene Zeile kannst du dann nach Zeichen (Klammern) durchsuchen und diese in deinem Stack ablegen.
 
Wenn du bei Google "Java Datei Zeilenweise einlesen" eingibt, bekommst du mit Sicherheit hunderte von Beispielen.

Die eingelesene Zeile kannst du dann nach Zeichen (Klammern) durchsuchen und diese in deinem Stack ablegen.

Ist es nicht möglich die Zeichen einzeln abzulesen? Sollte ich nämlich erst die Zeilen und dann die Zeichen ablesen, bräuchte ich ja eine geschachtelte Schleife, was laufzeittechnisch nicht sehr sinnvoll wäre
 
Den Stack habe ich ziemlich schnell fertig gehabt, wie man zeilenweise aus Dateien einliest habe ich inzwischen auch rausbekommen

Mein Problem ist, wenn ich "FileReader f = new FileReader("Datei.txt");" verwende, brauche ich dann nicht irgendwas wie f.readLine() (bloss eben nicht für Zeilen, sondern Zeichen), sonst springt das Programm doch gar nicht zum nächsten Zeichen, oder?

Sollte das nur mit zeilenweisem Auslesen funktionieren, kann mir jemand auch schnell einen Tipp geben, mit welcher Java-Methode bestimmte Zeichen in einem String gefunden werden können?

public class Stack {
private char[] stackArray;
private int top;
public Stack(char[] stackArray){
this.stackArray = new char[(stackArray.length)];
top = -1;
}
public void push(char x){
top++;
stackArray[top] = x;
}
public char pop(){
top--;
return stackArray[top+1];
}
public boolean isEmpty(){
if(top==-1){
return true;
}
return false;
}
public boolean isFull(){
if(top==stackArray.length){
return true;
}
return false;
}
public static void main(String[] args)throws Exception{

}
}
 
[noparse]
Java:
Source
[/noparse]

contains Schaut ob ein String im String ist.
indexOf Schaut, ob und an welcher Stelle ein Char ist.
lastIndexOf Schaut, ob und an welcher Stelle der Char das letzte mal vorkommt.

Versuchs beim Lesen mal mit read().
 

Neue Themen


Zurück
Oben