Ascii Bild aus einem input file nur kommt nix im outputfile an??????

pisco

Bekanntes Mitglied
Hey Leute
Meine Aufgabe ist es ein Ascii Bild einzulesen und diesen dann in einem Outputfile zu speichern. Nur es kommt bei mir nix im outputfile an...

Also das wär das Ascii Bild amal:

In

read 18
.....X....X......................X....X.....
....XXX..XXX....................XXX..XXX....
....XXX..XXX....................XXX..XXX....
....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....
....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....
..XXXXXXXXXXXX................XXXXXXXXXXXX..
.XXXXXXXXXXXXXX..............XXXXXXXXXXXXXX.
.XXXXXXXXXXXXXX..............XXXXXXXXXXXXXX.
.XXXXXXXXXXXXXX..............XXXXXXXXXXXXXX.

Out

.....X....X......................X....X.....
....XXX..XXX....................XXX..XXX....
....XXX..XXX....................XXX..XXX....
....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....
....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXX....................XXXXXXXX....
....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....
..XXXXXXXXXXXX................XXXXXXXXXXXX..
.XXXXXXXXXXXXXX..............XXXXXXXXXXXXXX.
.XXXXXXXXXXXXXX..............XXXXXXXXXXXXXX.
.XXXXXXXXXXXXXX..............XXXXXXXXXXXXXX.
44 18

und hier ist mein geschriebener Source:

Java:
import java.lang.*;
import java.util.*;
//importieren der Bibliotheken

public class AsciiShop3{//so heißt meine Klasse
	public static void main (String[] args){//das muss immer da stehen
		
		int laengebild = 0; 
		int anzahllines = 1;
		int output1=0, output2=0;
		boolean mistake = false;
		
		Scanner sc = new Scanner(System.in);
			
		String read=sc.next();
		if (read.equals("read")) { 
			
			if (sc.hasNextInt()) {
				laengebild = sc.nextInt();//hier lese ich die Länge des Bildes aus
				String firstline=sc.next();
				
				StringBuffer bild = new StringBuffer(firstline);
	//			StringBuffer fertig = new StringBuffer(zusammen);
				
				while (sc.hasNext() && mistake) {
					String zeile= sc.next();
					
					if (zeile.equals("decode")) {
						mistake=true;
					}
					/*WICHTIG*/
					//Hier kommen meine Überprüfungsroutinen für die Befehle rein/
					
										
					else {
						String afterline= zeile;//hier werden die reslichen Zeilen ausgelesen
						
						anzahllines++;//die Anzahl der Zeilen erhöht sich immer um 1ns bei jedem durchlauf 
						bild.append(afterline);//und hier werdens angehängt
						
						//Routine um das Bild auf seine Längenangaben zu verifizieren
						if (firstline.length() != afterline.length()) {
							System.out.println("INPUT MISMATCH");
							mistake =true;
						}
						//-----------------------------------------------------------
						if (sc.hasNext()==false){
							
							if (anzahllines!=laengebild) {
								System.out.println("INPUT MISMATCH");
								mistake = true;
							}
							
							else {
		
								while (output1<=bild.length()-firstline.length()) {
									
									String unverschluesselt=bild.toString();
										
										//uneverschlüsselt ist dann das bild das wieder in einen String umgewandelt wurde und dann
										//ausgegeben wird
										System.out.println(unverschluesselt);
										
										output1=output1+firstline.length();
									}
								System.out.println (firstline.length() + " " + anzahllines);
								mistake = true;
							
							}
						}
					}
				}
			}
		}
	
	
	
	
	/*Ende*/			
	}
}

Also compilierungsfehler hab ich keinen.

Ich würde mich freuen wenn ihr mir helfen könntet...

Natürlich freu ich mich über jeden Comment der mich weiterbringt und mir hilft meine Coding Skills noch weiter zu verbessern ;)

greetz und vielen dank euch schon mal im voraus

pisco
 

Developer_X

Top Contributor
Erstmal konkret:
Du willst ein ASCII-Bild (also den Text oben) in die Console eingeben, und das Programm soll das ganze speichern, richtig?

1.Frage : Zeilen Weise eintippen, oder gleich rein?
2.Frage : War das allesß
 
Zuletzt bearbeitet:

pisco

Bekanntes Mitglied
hey erstmal danke für deine Antwort....

nein nicht ganz Developer_X. Ich hab ein inputfile.txt und will das ganze in einem outputfile dann ausgeben

hab das beim compilieren immer so gemacht:

java MyProgramm <input.txt> output.txt //ich glaub so wars

greetz
 

cr33p

Mitglied
Dann mach das doch mit dem BufferedReader/Writer.

Java:
BufferedReader reader = new BufferedReader(new FileReader(new File(pfadZurDatei)));
BufferedWriter writer = new BufferedWriter(new FileWriter(new File(pfadZurDatei)));

while(reader.ready())
{
irgendeinString += reader.readLine() + "\n";
}

Jetzt hast du in der Variable "irgendeinString" das komplette ASCII Bild Zeile für Zeile drin.
Falls du es jetzt noch auf eine Datei schreiben willst, einfach writer.write(irgendeinString);
 

Wortraum

Bekanntes Mitglied
Beeindruckende Einrückungstiefe. :D Dazu ein kleiner Tip: Sie ist ein Indiz für schlechten Quelltext; die Aufteilung in mehrere Methoden kann bereits Abhilfe schaffen. In Deinem Fall kannst Du die while-Schleife auch überall dort mit break verlassen, wo Du stattdessen die Abbruchvariable mistake setzt, so daß Du Dir alle else-Zweige sparen kannst – das macht es zwar noch nicht schön, aber wenigstens ein bißchen geschminkt und gekämmt.

Außerdem solltest Du Dich an Java-Konventionen halten und Variablennamen entsprechend vergeben (laengeBild, anzahlLines). Persönlich ganz grausam empfinde ich die Vermischung von englischen und deutschen Namen (laengebild, zeile, aber afterline und mistake), und noch ein Quentchen grausamer ist die Vermischung innerhalb eines Namens (anzahllines).

Und dann noch ein dritter Hinweis: etwas weniger Leerzeilen täten der Lesbarkeit gut.

In Zeile 11 setzt Du mistake auf false, somit geht er erst gar nicht in die while-Schleife in Zeile 25. Ob das der einzige Fehler ist, weiß ich nicht, aber er fiel mir als erstes auf.
 
Zuletzt bearbeitet:

Developer_X

Top Contributor
Schau dir mal das an, ist ein kleines Programm von mir, hilft dir bestimmt weiter:
Java:
package codes;

import java.io.*;
import java.util.*;

/**
 * 
 * @author Kevin Riehl
 *
 */

public class ASCII_Pic_Reader 
{
//	Attribute
	Scanner scanner;
	String[] image = {""}; // unser image
	String read;
	String data_type = ".img"; // Datentyp kannst du .img nennen wenn du willst.
	String directory = "images"; // Ordner in den die Dateien >>abgelegt<< werden.
	
//	Constructor
	public ASCII_Pic_Reader()
	{
		// 0. Initialisiere den Scanner.
		scanner = new Scanner(System.in);
		
		while(true)
		{
			System.out.println("Was möchten sie tun?");
			System.out.println("create - Erstellen Sie ein Bild.");
			System.out.println("read - Lesen Sie ein Bild.");
			
			String read = scanner.next();
			
			if(read.equals("create"))
				create(scanner);
			else if(read.equals("read"))
				read(scanner);
			
			image = new String[1];
			image[0] = "";
		}
	}

// 	 Methoden
	
	/**
	 * Mit dieser Methode kann man Bilder erstellen.
	 */
	public void create(Scanner sc)
	{
		// 1. Fordere das Bild an.
		System.out.println("Bitte geben Sie den Bild Code (ASCII) ein : ");
		System.out.println("(Info: Wenn Sie fertig sind, geben Sie einfach >>save<< ein,");
		System.out.println("und drücken ENTER.)");
		System.out.println("");
		
		// 2. Lese das Bild ein.
		for(;;) // Unendlich lange, bis man speichern will, 
				// sollte man das Bild eintippen.
		{
			read = scanner.next(); // Eingetippter Text wird eingelesen
			
			if(read.equals("save")) // Falls der Text >>save<< entspricht,
									   // Soll die Schleife beendet werden, 
									   // und es soll gespeichert werden.
			{
				save(scanner);
				break;
			}
			else // Andernfalls wird die Zeile einfach zum Array hinzugefügt.
				addZile(read);
			
			read = ""; // read wird wieder geleert, für den neuen Durchlauf der Schleife.
		}
	}
	
	/**
	 * Mit dieser Methode kann man Bilder laden.
	 */
	public void read(Scanner sc)
	{
		// Abfrage des Names der Datei
		File f = new File(directory+"/");
		System.out.println("Folgende Dateien vorhanden. " + // \n ist für Zeilenumbrüche
				"\n Geben Sie die Nummer der Datei an,\n die sie gerne lesen möchten.");
		
		String[] files = f.list();
		for(int i = 0;i<files.length;i++)
			System.out.println(i+". "+files[i]);
		
		// Frage nummer ab
		int number = scanner.nextInt();
		
		// Lese Datei
		File img_file = new File(directory+"/"+files[number]);
		
		try 
		{
			BufferedReader br = new BufferedReader(new FileReader(img_file));
			int zeilen = 0;
			
			for(;br.readLine()!=null;zeilen++)
				;
			br.close();
			
			image = new String[zeilen];
			br = new BufferedReader(new FileReader(img_file));
			for(int i = 0;i<image.length;i++)
				image[i] = br.readLine();
		} 
		catch (Exception e) 
		{
			e.printStackTrace();
		}
		
		// Gebe Bild aus
		System.out.println("");
		System.out.println("Bild : "+files[number]);
		System.out.println("");
		
		for(int i = 0;i<image.length;i++)
			System.out.println(image[i]);
	}
	
	/**
	 * Fügt die neue eingegebene Zeile zum Array hinzu.
	 * @param s Neue Zeile
	 */
	public void addZile(String s)
	{
		String[] old_string_array = image;
		image = new String[old_string_array.length+1]; // Eine Zeile mehr
		
		for(int i = 0;i<old_string_array.length;i++) // Fügt alle alten Zeilen hinzu
			image[i] = old_string_array[i];
		
		image[old_string_array.length] = s; // Fügt neuestes hinzu
	}
	
	/**
	 * Speichert das Bild.
	 */
	public void save(Scanner scanner)
	{
		// Fordere Namen der Datei an.
		System.out.println("Bitte geben Sie den Namen des Bildes an.");
		
		// Lese den Namen ein.
		String name = scanner.next();
		
		// Erstelle die Datei.
		File img_file = new File(directory+"/"+name+data_type);
		
		File directo = new File(this.directory);
		if(directo.exists()==false) // Falls der Ordner wo die Bilder gespeichert sind,
									// Noch gar nicht existiert, soll er erst erstellt
									// werden.
			directo.mkdir();
		try 
		{
			boolean created = img_file.createNewFile(); // Datei wird erstellt
			// Bescheid geben
			if(created)
			{
				System.out.println("Datei wurde erfolgreich erstellt.");
				PrintWriter pw = new PrintWriter(new FileWriter(img_file)); // Erstelle
									// Printwriter, mit dem man in Dateien schreiben kann.
				for(int i = 0;i<image.length;i++)
					pw.println(image[i]); // Schreibe in die Datei
				pw.close(); // Schließe die Verbindung zur Datei, damit andere Programme
							// Darauf zurückgreifen können.
			}
			else
				System.out.println("Datei konnte nicht erstellt werden.");
		} 
		catch (Exception e) 
		{
			e.printStackTrace();
		}
		
		// Letzter Bescheid
		System.out.println("Bild Daten wurde erfolgreich gespeichert.");
		
		System.out.println("-------------------------");
	}
	
//	Main
	public static void main(String[]args)
	{
		new ASCII_Pic_Reader();
	}
}

Ich hoffe es hat dir geholfen?
Wenn ja, gern geschehen,
Developer_X
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Übermittlung zusätzlicher ASCII-Zeichen bei Übertragung von Dateiinhalt mit Xmodem - JAVA Allgemeine Java-Themen 9
R Datentypen Korrekte integer in Hex ASCII Konvertierung und serialisierung Allgemeine Java-Themen 1
B Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle) Allgemeine Java-Themen 3
C ASCII-Code in Java Allgemeine Java-Themen 1
B ASCII als 8-bit Binärstring darstellen Allgemeine Java-Themen 5
C BigInteger nach ASCII Code in String Allgemeine Java-Themen 11
cedi int Zahl in ein ASCII zeichen umwandeln und dieses in ein externes Textfenster schreiben Allgemeine Java-Themen 6
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
D Datei mit allen Ascii Zeichen Allgemeine Java-Themen 2
F Hexcode von ASCII Zeichen erhalten Allgemeine Java-Themen 2
dru Graph aus Ascii Daten erstellen Allgemeine Java-Themen 2
S Hexzahl in ASCII umwandeln Allgemeine Java-Themen 3
R Auslesen von File - ASCII und Binärzeichen Allgemeine Java-Themen 13
D Datei im DOS/ASCII-Format einlesen. Allgemeine Java-Themen 9
Daniel_L ASCII in UniCode umwandeln? Allgemeine Java-Themen 14
K Datei als HEX oder dezimal gem. ASCII einlesen Allgemeine Java-Themen 4
S String auf ASCII Kodierung überprüfen? Allgemeine Java-Themen 4
F Unicode zu ASCII konvertieren Allgemeine Java-Themen 5
E Alarm ausgeben (ASCII Zeichen 7) über Lautsprecher Allgemeine Java-Themen 11
I Nochmal ASCII-Code Allgemeine Java-Themen 9
I ASCII Code in Java Allgemeine Java-Themen 3
B ASCII-Gui Bibliothek Allgemeine Java-Themen 2
M ASCII85 to ASCII Allgemeine Java-Themen 4
S int nach Ascii konvertieren Allgemeine Java-Themen 2
U ASCII ZEichenkette wird net richtig ausgegeben Allgemeine Java-Themen 2
M Problem mit bestimmten ASCII Codes Allgemeine Java-Themen 3
I Suche Methode: Buchstaben in ASCII umwandelt Allgemeine Java-Themen 2
R ascii-wert zuweisung Allgemeine Java-Themen 4
J String in ASCII werte umwandeln Allgemeine Java-Themen 7
T ASCII decodieren Allgemeine Java-Themen 4
berserkerdq2 Habe ein svg bild, kann ich das zu svg koordinaten umrechnen, damit ich den Umriss zeichnen kann? Wenn ja wie? Allgemeine Java-Themen 1
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
OnDemand Prüfen ob Bild defekt ist Allgemeine Java-Themen 4
Y Bild in JPanel setzen Allgemeine Java-Themen 2
Kirby.exe Bild im Zentrum spiegeln Allgemeine Java-Themen 14
I Apache POI Bild in Word ersetzen Allgemeine Java-Themen 15
OnDemand Bild prüfen ob defekt Allgemeine Java-Themen 3
L Input/Output Kassenzettel lesen aus einem Bild Allgemeine Java-Themen 2
K Bild in einem anderen Bild suchen Allgemeine Java-Themen 12
R Compiler-Fehler Bild per E-Mail versenden Allgemeine Java-Themen 3
M Java- Bild gewissen Anzahl von Sekunden anzeigen?! Allgemeine Java-Themen 4
RalleYTN 2D-Grafik Bild mit bilinearer Interpolation skalieren Allgemeine Java-Themen 31
RalleYTN 2D-Grafik Bild ohne AWT, Swing und JavaFX rotieren Allgemeine Java-Themen 12
S Telefonbuch mit Bild Allgemeine Java-Themen 4
A 2D-Grafik Text in ein Bild schreiben Allgemeine Java-Themen 11
Tacofan GIF-Bild wird "zerstört" Allgemeine Java-Themen 3
B Bild aus Jar kann nach Export nicht mehr gefunden werden Allgemeine Java-Themen 13
T Neuen Kanal in Bild (TIFF) einfügen à la Photoshop Allgemeine Java-Themen 2
Z Zahlen aus Bild auslesen Allgemeine Java-Themen 1
X Bild -> lokale Variable -> DB -> lokale Variable Allgemeine Java-Themen 3
E 3D Objekte in 2D Bild finden Allgemeine Java-Themen 5
R HtmlUnit: Canvas als Bild speichern Allgemeine Java-Themen 0
E am häufigsten vorkommenden Farben aus einem Bild Allgemeine Java-Themen 5
S Bild in Raster Allgemeine Java-Themen 1
S Bild in Frame Allgemeine Java-Themen 0
F Punkte in einem Bild finden Allgemeine Java-Themen 10
A Bild aufteilen für getData Allgemeine Java-Themen 3
P Wie füge ich ein Bild in die GUI ein? Allgemeine Java-Themen 7
F ImageJ: Linien und Schnittpunkte in Bild Allgemeine Java-Themen 1
A mit getClassLoader Bild laden Allgemeine Java-Themen 8
E Bild abspeichern Allgemeine Java-Themen 5
D Face.com - Gesicht im Bild finden Allgemeine Java-Themen 3
N Input/Output Bild von WebSite laden? Allgemeine Java-Themen 3
A Input/Output Bild in Java einlesen und analysieren! Allgemeine Java-Themen 8
S programm um bild auszulesen Allgemeine Java-Themen 2
R Bild offenbar zu groß um geladen zu werden? Allgemeine Java-Themen 12
K Quadrat in einem Bild erkennen Allgemeine Java-Themen 33
B Bild verschieben Allgemeine Java-Themen 6
T Bild in jar Paket einbinden Allgemeine Java-Themen 9
D Bild Typ bestimmen Allgemeine Java-Themen 9
0 2D-Grafik Bild einfärben Allgemeine Java-Themen 8
A Bild zusammenbauen! Allgemeine Java-Themen 5
A Bild von Webcam aufzeichnen Allgemeine Java-Themen 14
V 2D-Grafik Bild transparent machen. Allgemeine Java-Themen 4
H Bild einscannen und speichern Allgemeine Java-Themen 29
E Bild mit Listener einfügen Allgemeine Java-Themen 3
B Bild in String einbauen? Allgemeine Java-Themen 3
C Bild auf HDD speichern Allgemeine Java-Themen 4
X Bild aus dem Netz von URL runterladen und in GUI einbinden. Allgemeine Java-Themen 3
F Bild (Point) mit scrollen lassen Allgemeine Java-Themen 5
R Texterkennung - Text aus einem/r Bild/Grafik auslesen Allgemeine Java-Themen 2
B Bild- und Texterkennung Allgemeine Java-Themen 4
S Tracing eines Bildes (a.ka. Bild vektorisieren)..? Allgemeine Java-Themen 2
destroflyer *.dds-Bild anzeigen Allgemeine Java-Themen 12
F Bild aus externer Quelle laden und Skalieren? Allgemeine Java-Themen 11
X Bild im Memory zwischen speichern Allgemeine Java-Themen 11
R JAI - RGB Bild in 3 Einzelbilder zerlegen Allgemeine Java-Themen 4
A Möglichkeiten, ein Bild schnell auszuwerten Allgemeine Java-Themen 56
D Java Thread, Bild wird nur am Ende gezeichnet Allgemeine Java-Themen 5
K Zeichnen auf ein Bild und Scrollen Allgemeine Java-Themen 7
data89 Barcodes in Bild erkennen Allgemeine Java-Themen 17
S Bild anhand von Koordinaten einteilen Allgemeine Java-Themen 7
K Transparente Bilder in Bild positionieren und speichern. Allgemeine Java-Themen 5
W Bild Spiegeln, aber Originalbild ausblenden Allgemeine Java-Themen 2
B Bild wird nicht angezeigt. Allgemeine Java-Themen 10
Developer_X Avatar/Bild ins Profil einbinden Allgemeine Java-Themen 10
C Bild in .txt speichern und wieder als Bild speichern Allgemeine Java-Themen 2
D Bild in text tabelle umwandeln Allgemeine Java-Themen 2
G bild in package Allgemeine Java-Themen 6
MQue bild zoomen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben