Textdatei in geschachtelte Array speichern

desouza

Mitglied
Hallo Freunde,

ich hab eine Textdatei wo sich ein Labyrinth befindet. Diese Datei muss ich in einen geschachtelten Array speichern. Hab leider kann Plan wie ich das machen soll.

Kann mir jmd helfen?

Vielen Dank im Vorraus
 

pro2

Bekanntes Mitglied
Java:
        char array[][] = new char[10][10];
        Reader r = new BufferedReader(new InputStreamReader(new FileInputStream("c:\\file.txt")));
        for (int i = 0; i < 10; i++)
        {
            for (int j = 0; j < 10; j++)
            {
                array[i][j] = (char) r.read();
            }
            r.skip(2);  //Zeilenumbruch umgehen
        }

Wäre ne Möglichkeit, toll ist das aber nicht. (Ist jetzt auch auf deine Größe begrenzt, müsste man dann ggf. unabhängig davon machen)

Google einfach mal nach "read character by character in java", da finden sich bestimmt noch bessere Lösungen.
 
Zuletzt bearbeitet:

Phash

Top Contributor
du kannst es auch einfach mal Zeilenweise einlesen und die Strings die du erhaelst in CharArrays umwandeln...
 

desouza

Mitglied
Wie kann ich die Länge des Arrays so bestimmen, dass ich es nicht initialisieren muss? Also die Länge(Zeilen und Spalten) soll von der Textdatei übernommen werden.

Java:
public class LabyrinthImpl implements Labyrinth {
	char[][] labyrinth=new char[15][15];
	
	
	public LabyrinthImpl(String datei) throws IOException{
		FileReader fr=new FileReader("labyrinth1.txt");
		BufferedReader br=new BufferedReader(fr);
		for(int i=0; i<labyrinth.length;i++){
			for(int j=0; j<labyrinth[i].length;j++){
				char zeile=(char)br.read();
				labyrinth[i][j]=zeile;
				System.out.print(labyrinth[i][j]);
			}
		}
	}
 
G

Gast2

Gast
Du müsstest wissen wieviele Zeilen deine Datei hat, das kannst du aber nicht einfach so herauslesen.
Da bleibt dir nur die Möglichkeit einmal komplett die Datei einzulesen und die Anzahl der Zeilen zu zählen. Danach erstellst du das Array und ließt dein Labyrinth ein.

Alternativ nimmst du eine List, die kann beliebig groß werden.
 

pro2

Bekanntes Mitglied
Oder du speicherst solche "Metainformationen" in der Datei. Dass die Datei dann z. B. so aussieht:

Code:
15 15
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
 

desouza

Mitglied
Ich habe das Problem mit Zeilen und Spalten zählen gelöst, jetzt habe ich das Problem, das der Inhalt der Datei nur in Fragezeichen (?) ausgegeben wird. Was kann ich tun???

Java:
char[][] labyrinth;

	public LabyrinthImpl(String datei) throws IOException {
		FileReader fr = new FileReader(datei);
		BufferedReader br = new BufferedReader(fr);
		String zeile = br.readLine();
		int spaltenzähler = zeile.length();
		int zeilenzähler = 0;
		while (zeile != null) {
			zeile = br.readLine();
			zeilenzähler++;
		}
		labyrinth=new char[zeilenzähler][spaltenzähler];
		for(int i=0;i<labyrinth.length;i++){
			for(int j=0;j<labyrinth[i].length;j++){
				labyrinth[i][j]=(char)br.read();
				System.out.print(labyrinth[i][j]);
			}
			System.out.println();
		}
		
	}

Ausgabe:
Java:
??????????
??????????
??????????
??????????
??????????
??????????
??????????
??????????
??????????
??????????
 

pro2

Bekanntes Mitglied
Das Problem ist, dass du ja schon alles eingelesen hast. Du musst irgendwie wieder an die erste Position springen, denn da wo du zu lesen versuchst, ist das Dokument eigentlich zu Ende. ^^
Das hättest du gemerkt, wenn du beachtet hättest, dass der Rückgabewert von read() -1 ist, falls die Datei ihr Ende erreicht hat!

Java:
        BufferedReader br = new BufferedReader(fr);
        br.mark(/* irgendwas großes*/);
        ...

        br.reset();
        for (int i = 0; i < labyrinth.length; i++)
        {
 
Zuletzt bearbeitet:

DrZoidberg

Top Contributor
Ich würds so machen.
Java:
ArrayList<char[]> list = new ArrayList<>():
BufferedReader r = new BufferedReader(new FileReader("c:\\file.txt"));
String line = r.readLine();
while(line != null) {
    list.add(line.toCharArray());
    line = r.readLine();
}
r.close();
char[][] array = (char[][])list.toArray();
 

desouza

Mitglied
Das Problem ist, dass du ja schon alles eingelesen hast. Du musst irgendwie wieder an die erste Position springen, denn da wo du zu lesen versuchst, ist das Dokument eigentlich zu Ende. ^^
Das hättest du gemerkt, wenn du beachtet hättest, dass der Rückgabewert von read() -1 ist, falls die Datei ihr Ende erreicht hat!

Java:
        BufferedReader br = new BufferedReader(fr);
        br.mark(/* irgendwas großes*/);
        ...

        br.reset();
        for (int i = 0; i < labyrinth.length; i++)
        {

hab ich nicht gnaz verstanden^^

und arraylist dürfen wir leider nicht benutzen -.-
 

pro2

Bekanntes Mitglied
hab ich nicht gnaz verstanden^^

und arraylist dürfen wir leider nicht benutzen -.-

Na schau mal: Du benutzt readLine, um die Zeilen zu zählen. Dabei wird aber schon die ganze Datei abgeklappert, wenn du später lesen willst mit
Code:
#read
, ist er schon am Ende der Datei angelangt.
Dafür gibt es die Funktionen
Code:
#mark
und
Code:
#reset
. Mit
Code:
#mark
markierst du den Punkt, an den du später zurückspringen willst. Das baust du also ganz am Anfang ein, denn dorthin willst du wieder zurück. Wenn du mit dem eigentlichen Einlesen der Zeichen beginnen möchtest, resettest du das ganze dann, um dorthin wieder zurückzukehren. Alternativ kannst du auch deinen File und BufferedReader einfach noch mal neu initialisieren.
 

desouza

Mitglied
Die Textdatei wird jetzt nicht vollständig ausgegeben, genauer gesagt die letzte zwei Zeilen. Die Funktionen mark() und reset() haben funktioniert. Was kann da noch falsch sein???


Quellcode:
Java:
char[][] labyrinth;

	public LabyrinthImpl(String datei) throws IOException {
		FileReader fr = new FileReader(datei);
		BufferedReader br = new BufferedReader(fr);
		br.mark(500);
		String zeile = br.readLine();
		int spaltenzähler = zeile.length();
		int zeilenzähler = 0;
		while (zeile != null) {
			zeile = br.readLine();
			zeilenzähler++;
		}
		br.reset();
		labyrinth = new char[spaltenzähler][zeilenzähler];
		for (int i = 0; i < labyrinth.length; i++) {
			for (int j = 0; j < labyrinth[i].length; j++) {

				labyrinth[i][j] = (char) br.read();
				System.out.print(labyrinth[i][j]);
			}
		}
	}

Ausgabe:
Java:
** *******
*        *
* ****** *
*     ** *
***** ** E
*   * ****
* * *    *
* * **** *
* *

erwünschte Ausgabe:
Java:
** *******
*        *
* ****** *
*     ** *
***** ** E
*   * ****
* * *    *
* * **** *
* *      *
* ********
 

DrZoidberg

Top Contributor
Ändere mal diese Zeile ab
Java:
labyrinth = new char[spaltenzähler][zeilenzähler];

labyrinth = new char[zeilenzähler][spaltenzähler];

Ausserdem musst du Zeilenumbrüche gesondert behandeln.
Die Zeile
[Java]labyrinth[j] = (char) br.read();[/code]
überprüft nicht ob br.read() einen Zeilenumbruch zurückliefert. D.h. '\n' oder '\r'. Die Zeilenumbrüche speicherst du dann in deinem Array ab.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
javapingu Jeglichen Inhalt einer Textdatei nach Zeile n löschen Java Basics - Anfänger-Themen 8
izoards Textdatei Human unreadable abspeichern Java Basics - Anfänger-Themen 17
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
LeoDerKek Textdatei in JAR-File Java Basics - Anfänger-Themen 4
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
3 Textdatei Zeilenweise auslesen Java Basics - Anfänger-Themen 3
Ray19941 Über BlueJ Textdatei selbstständig erstellen lassen Java Basics - Anfänger-Themen 2
NeoLexx Datenströme Lesen und Schreiben einer Textdatei Java Basics - Anfänger-Themen 2
D Input/Output Mehrzeiligen String aus Textdatei erstellen Java Basics - Anfänger-Themen 5
M Datenbank oder Textdatei? Java Basics - Anfänger-Themen 4
X Textdatei: zwei-zeilenweise gleiche Zeilen rausschmeißen Java Basics - Anfänger-Themen 21
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
L Objekt aus Textdatei in ArrayList speichern Java Basics - Anfänger-Themen 4
J Wörter aus Textdatei suchen Java Basics - Anfänger-Themen 2
S Importieren einer Textdatei Java Basics - Anfänger-Themen 2
x-tshainge Innerhalb von Textdatei addieren Java Basics - Anfänger-Themen 9
Jinnai4 Werte in Textdatei ändern Java Basics - Anfänger-Themen 2
JDimi Textdatei mit beliebig vielen Zeilenumbrüchen erstellen Java Basics - Anfänger-Themen 2
it_is_all Bild-Pfad wird gefunden, nicht aber Textdatei-Pfad Java Basics - Anfänger-Themen 8
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
G Wert in Textdatei ersetzen? Java Basics - Anfänger-Themen 2
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
C Input/Output Textdatei vom Java-Programm nicht geladen Java Basics - Anfänger-Themen 58
A Textdatei mit BufferedReader einlesen Java Basics - Anfänger-Themen 0
T Länge einer Textdatei Java Basics - Anfänger-Themen 11
S Übertragen einer Textdatei in ein 2d-Array Java Basics - Anfänger-Themen 2
N Integers aus Textdatei auslesen und mehrere Arrays erstellen Java Basics - Anfänger-Themen 9
T Textdatei öffnen und ans Ende scrollen Java Basics - Anfänger-Themen 11
J Textdatei filtern und bearbeiten Java Basics - Anfänger-Themen 1
C Textdatei oder doch eine Datenban Java Basics - Anfänger-Themen 15
J Input/Output Tilemap effizient speichern als Textdatei Java Basics - Anfänger-Themen 7
J Input/Output Zeile in Textdatei ändern Java Basics - Anfänger-Themen 14
M Textdatei(en) in .jar schreiben Java Basics - Anfänger-Themen 5
K Textdatei auslesen Java Basics - Anfänger-Themen 10
H Input/Output Inhalt einer GUI in Textdatei speichern Java Basics - Anfänger-Themen 1
K Erste Schritte Textdatei -> Array Java Basics - Anfänger-Themen 1
F Textdatei einlesen in ArryList (Objekte abspeichern?) Java Basics - Anfänger-Themen 4
F Problem mit Tabulatoren bei Zeilen zählen einer Textdatei Java Basics - Anfänger-Themen 17
G Erste Schritte Textdatei einlesen und in Array speichern Java Basics - Anfänger-Themen 5
F Textdatei einlesen und Zeilen zählen Java Basics - Anfänger-Themen 10
L Namen aus Textdatei auslesen Java Basics - Anfänger-Themen 1
E Textdatei kopieren funktioniert nicht Java Basics - Anfänger-Themen 12
M Zweidimensionales Array aus Textdatei gewinnen Java Basics - Anfänger-Themen 6
C Aus einer Textdatei Zahlen lesen mit Leerzeichen Java Basics - Anfänger-Themen 11
S Methoden Textdatei auslesen Java Basics - Anfänger-Themen 11
G Textdatei auf Dubletten prüfen Java Basics - Anfänger-Themen 8
T Textdatei Zeile löschen? Java Basics - Anfänger-Themen 4
T Textdatei beschreiben/bearbeiten Java Basics - Anfänger-Themen 4
S Textdatei einlesen und JFrame füllen Java Basics - Anfänger-Themen 14
C auslesen bestimmter werte einer textdatei und anschl. hineinschreiben in eine neue txt-datei. Java Basics - Anfänger-Themen 2
S Textdatei lesen, Methode gibt nur die letzte Zeile aus. Warum? Java Basics - Anfänger-Themen 5
C Einlesen in Array von Textdatei sehr langsam Java Basics - Anfänger-Themen 7
R Werte in eine Textdatei schreiben Java Basics - Anfänger-Themen 20
J Neue Zeile an bestimmter Stelle in Textdatei einfügen Java Basics - Anfänger-Themen 2
T Scanner für große Textdatei Java Basics - Anfänger-Themen 11
A Unterschied Textdatei und Quelltextdatei Java Basics - Anfänger-Themen 5
P Input/Output Textdatei einlesen - 1. Zeichen fehlt Java Basics - Anfänger-Themen 7
J Input/Output Textdatei in einer JAR lesen Java Basics - Anfänger-Themen 3
T Erste Schritte einzelne Wörter aus textdatei lesen... Java Basics - Anfänger-Themen 4
S Textdatei im Internet lesen und editieren Java Basics - Anfänger-Themen 2
J Textdatei einlesen und ausgeben - NullPointerException Java Basics - Anfänger-Themen 5
M Input/Output Objekte in einer Textdatei ablegen (Highscore) Java Basics - Anfänger-Themen 9
P CSV Daten in Textdatei Speichern Java Basics - Anfänger-Themen 3
K Input/Output Eingelesenedaten von Scanner als Textdatei ausgeben? Java Basics - Anfänger-Themen 2
N Input/Output Konsolenausgabe in Textdatei speichern/umleiten Java Basics - Anfänger-Themen 7
V Auf Textdatei in jar zugreifen Java Basics - Anfänger-Themen 3
A Textdatei einlesen - erstes Zeichen falsch Java Basics - Anfänger-Themen 20
S Methoden Textdatei Teil String auslesen Java Basics - Anfänger-Themen 3
H Zeile aus Textdatei lesen und in Textfield schreiben Java Basics - Anfänger-Themen 4
J durch drücken eines buttons text in einer textdatei speichern Java Basics - Anfänger-Themen 2
W letzte Zeile aus wachsender Textdatei auslesen Java Basics - Anfänger-Themen 5
algebraiker Textdatei-Import Java Basics - Anfänger-Themen 8
M Datum aus einer Textdatei holen Java Basics - Anfänger-Themen 9
C Spalte einer Textdatei einlesen Java Basics - Anfänger-Themen 10
Fab1 Input/Output Textdatei auslesen Java Basics - Anfänger-Themen 4
O grosse Textdatei performant als string speichern Java Basics - Anfänger-Themen 8
P Mit offset aus Textdatei auslesen Java Basics - Anfänger-Themen 3
C Textdatei einlesen Java Basics - Anfänger-Themen 8
V Falsches Auslesen von Textdatei Java Basics - Anfänger-Themen 3
T Input/Output 20Mb Textdatei zeilenweise auslesen Java Basics - Anfänger-Themen 10
N Textdatei lesen mit Umlauten Java Basics - Anfänger-Themen 16
N In Textdatei speichern und auslesen Java Basics - Anfänger-Themen 18
M Textdatei einlesen Java Basics - Anfänger-Themen 3
M Liste in Textdatei schreiben Java Basics - Anfänger-Themen 7
B Input/Output Textdatei einlesen Windows / Linux Java Basics - Anfänger-Themen 2
F Textdatei einlesen Java Basics - Anfänger-Themen 7
C Textdatei einlesen -> Probleme Java Basics - Anfänger-Themen 3
K Input/Output Textdatei scheibchenweise auslesen Java Basics - Anfänger-Themen 8
S Textdatei stückweise einlesen Java Basics - Anfänger-Themen 7
D 1 Wort aus TextDatei auslesen Java Basics - Anfänger-Themen 3
J Jede Zeile der Textdatei in ListUI eintragen Java Basics - Anfänger-Themen 2
N Textdatei wird beim Speichern nicht überschrieben, sondern ergänzt Java Basics - Anfänger-Themen 4
A Double Array in TextDatei schreiben Java Basics - Anfänger-Themen 9
K Richtige Pfadangabe einer Textdatei Java Basics - Anfänger-Themen 7
B OOP Aus Textdatei auslesen Java Basics - Anfänger-Themen 11
P Textdatei auf erste Zeichenkette Prüfen... Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben