Ascii Bild einlesen

pisco

Bekanntes Mitglied
Hey Leute,
Ich hab die Aufgabe bekommen ein ganz normales Ascii Bild einzulesen und dann die Hoehe und Breite auszugeben. Wenns nicht passt in der Breite dann "Input Dismatch"

Irgendwie gehts aber bei mir ned:
Java:
import java.util.Scanner;

public class AsciiShop 
{
	public static void main(String args[])
	{
		int Hoehe = 0;
		int Breite = 0;
		boolean Fehler = false;
		Scanner eingabe = new Scanner(System.in);
		String Zeile = "";
	
		while(eingabe.hasNextLine() != false)
		{
			Zeile = eingabe.nextLine();
			
			if(Breite == 0)
			{
				Breite = Zeile.length();
			} else if (Zeile.length() != Breite)
			{
				Fehler = true;
			}
			Hoehe++;
		}
		
		if (Fehler == true)
			System.out.println("INPUT MISMATCH");
		else
			System.out.println(Breite + " " + Hoehe);	
	}
}

Das Program hör einfach ned auf das Ascii Bild einzulesen...

Ich bin euch dankbar für jede Antwort, weil schön langsam verlier ich den Verstand...

greetz
 

KYLT

Mitglied
Nabend,
zu erst einmal zwei Anmerkungen. 1 Variabeln sollten immer klein geschrieben werden, zweitens solltest du, wenn du fehler durch Benutzereingaben erzeugen kannst , immer nen ordentliches Fehlerhandling machen - mein großer Try-Catch ist nur nen Beispiel. Des weiteren ist es unnötig, wenn du nen fehler festgestellt hast fortzufahren, du benutzt den Inhalt ja danach nicht , also darfst du dann auch per break die Schleife verlassen.

Dann aber nochmal ne zusätzliche Frage, warum nen Scanner und keinen simplen BufferedReader?

Java:
import java.util.Scanner;

public class AsciiShop
{
    public static void main(String args[])
    {
        int hoehe = 0;
        int breite = 0;
        boolean fehler = false;
       try {
        Scanner eingabe = new Scanner(System.in);
        String zeile = "";
        

        while(eingabe.hasNextLine()){
            zeile = eingabe.nextLine();
            if(breite == 0) {
                breite = zeile.length();
            } else if (zeile.length() != breite)
            {
                // Bei einem Fehler brauchen wir nicht weiter zu prüfen
                fehler = true;
                break;
            }
            hoehe++;
        }

        } catch (Exception e) {
// Fehlermeldung beim auslesen, hier ausgeben
          e.printStackTrace();
        }

        if (fehler == true)
            System.out.println("INPUT MISMATCH");
        else
            System.out.println(breite + " " + hoehe);
    }
}
 

pisco

Bekanntes Mitglied
hey
erstmal vielen dank für eure Antworten...

@Final_Strike
Wo liegt denn das Bild, in einer Textdatei?

nein das geb ich einfach über das Terminal ein...

@KYLT
Erstmal danke für den Tip mit den vars(hab wieder was dazu gelernt *freu*)
Also das es anders als über die Scanner methode geht wusste ich nicht(habs auch ned anders gelernt...)
Das mit try/catch find ich eine geile Lösung nur.... kann man das vll auch anders lösen?
Ich mein jetz nicht vollkommen anders sondern irgendwie das MEIN Sourcecode halt funzen würd?(ICh möcht eigentlich wissen was bei mir falsch ist.... möcht mich ja auch verbessern ;-) )

Die Ausgabe soll eigentlich sein:

Das Bild

Die Hoehe und Breite

greetz

PS.: Hab noch ein bissl über den code nachgedacht und ich glaub ich hab die hasNextLine() Methode ned ganz verstanden:
Die liefert doch einen false bei Eingabe Ende und anstonsten ein true
kann ich dann nicht einfach mit:

if(Breite=0)
....
reader.hasNextLine()=false;

die schleife verlassen... irgendwie geht der Ausdruck ned bei mir...

greetz und good night
 
Zuletzt bearbeitet:

Suinos

Bekanntes Mitglied
Java:
while(eingabe.hasNextLine())
Je nach Art des Streams kann dies zu einer Endlosschleife werden:
Java API hat gesagt.:
This method may block while waiting for input.

Normalerweise einigt man sich bei Eingaben auf einen speziellen Wert, welcher aussagen soll, dass keine weitere Eingaben folgen werden, zum Beispiel eine leere Zeile:

Java:
System.out.println("Start\n---");

Scanner sc = new Scanner(System.in);
final String sentinel = "";

while (sc.hasNextLine())
{
	String line = sc.nextLine();
	
	// falls der spezielle Wert eingegeben wurde, brechen wir aus der Schleife heraus
	if (line.equals(sentinel))
	{
		break;
	}
	
	System.out.println("Eingabe: " + line);
}

sc.close();

System.out.println("\n---\nEnde");

pisco hat gesagt.:
Die liefert doch einen false bei Eingabe Ende und anstonsten ein true
Das stimmt, aber, wie bereits gesagt, kann die Methode solange warten, bis etwas eingegeben wurde!

pisco hat gesagt.:
reader.hasNextLine()=false;
Nein, das geht so nicht.

---

KYLT hat gesagt.:
Dann aber nochmal ne zusätzliche Frage, warum nen Scanner und keinen simplen BufferedReader?
Huh? Ist es nicht der Scanner, welcher viel einfacher zu bedienen ist?

KYLT hat gesagt.:
[JAVA=34]if (fehler == true)
System.out.println("INPUT MISMATCH");
[/code]
Bei deinem Stück Code kann
Code:
fehler
hier nur
Code:
true
sein, da sonst die Schleife nie verlassen wird (btw: Klammern fehlen & booleans brauchen keinen Vergleich).
 

pisco

Bekanntes Mitglied
Hey erstmals thx für deine Antwort...

Je nach Art des Streams kann dies zu einer Endlosschleife werden:

Wie kann ich sowas verhindern?

reader.hasNextLine()=false;
Nein, das geht so nicht.

was ist falsch bzw. wie kann man das richtiger formulieren????

greetz
 
Zuletzt bearbeitet:

Suinos

Bekanntes Mitglied
pisco hat gesagt.:
Wie kann ich sowas verhindern?
Ausser mit meiner oben schon vorgeschlagenen Methode?
Gar nicht.

pisco hat gesagt.:
was ist falsch bzw. wie kann man das richtiger formulieren????
Generell: Du kannst nur Variablen einen Wert zuweisen, du versucht hier aber, dem Rückgabewert einer Methode etwas zuzuweisen.

Glaube mir, ich weiss, was du da tun willst, so funktioniert das aber nicht!

Ich finde, ehrlich gesagt, gerade keine bessere Erklärung, aber ich versuche es mit einer Analogie:

Stell dir vor, du sitzt vor dem Fernseher und hast eine Fernbedienung in der Hand.
[Fernbedienung = deine
Code:
reader
-Variable]

Jetzt drückst du auf einen Knopf auf der Fernbedienung.
[Aufruf der
Code:
hasNextLine()
-Methode]

Der Fernseher führt die Aktion aus. Der Kanal wurde gewechselt.
[Das Objekt hinter
Code:
reader
hat seine
Code:
hasNextLine()
-Methode durchgeführt und einen Wert zurückgegeben]

Jetzt sagst du (im Sinne von: 'reden', 'sprechen') zu der Fernbedienung, dass diese Aktion in einem anderen Resultat zu enden hat.
[
Code:
reader.hasNextLine()=false;
]

Nichts passiert.
[Compilerfehler]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P ASCII-Bild einlesen Java Basics - Anfänger-Themen 13
I Ascii Bild mittels Scanner einlesen Java Basics - Anfänger-Themen 9
T ASCII Art von Bild erstellen. Java Basics - Anfänger-Themen 32
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
obiwanke Ziffern durch ASCII Character ersetzen Java Basics - Anfänger-Themen 8
U Ascii wert verschieben, wie möglich? Java Basics - Anfänger-Themen 3
Sonas814 ASCII-Tabelle Java Basics - Anfänger-Themen 2
J Umwandlung String zu ASCII-Wert und anders Java Basics - Anfänger-Themen 17
E ASCII-Code in Java ausgeben Java Basics - Anfänger-Themen 6
krgewb ASCII-Tabelle Java Basics - Anfänger-Themen 12
O Ascii Tasse Ausgeben Java Basics - Anfänger-Themen 8
S ASCII String zu int Java Basics - Anfänger-Themen 5
R Fehler bei ASCII Char zu Int Umwandlung Java Basics - Anfänger-Themen 2
J ASCII - Raute Java Basics - Anfänger-Themen 18
K Ascii Converter mit Swing Java Basics - Anfänger-Themen 4
P ASCII-Tabelle Java Basics - Anfänger-Themen 5
C String mit ASCII vergleichen + gefundene Gemeinsamkeiten ausgeben Java Basics - Anfänger-Themen 21
H String in Ascii-Werte für Verschüsselungssystem Java Basics - Anfänger-Themen 8
A OOP Buchstaben mit ASCII Werten darstellen Java Basics - Anfänger-Themen 1
G Wert in Ascii Datei ändern, ohne die Datei neu zu schreiben Java Basics - Anfänger-Themen 24
A int in ASCII Konvertieren Java Basics - Anfänger-Themen 6
S ASCII Code aus String herauslesen Java Basics - Anfänger-Themen 3
Rayo Eingelesene Ascii Zahlen wie normale Zahlen prüfen Java Basics - Anfänger-Themen 4
A String(Ascii ) in String umwandeln Java Basics - Anfänger-Themen 3
D Von short zu Ascii-Code Java Basics - Anfänger-Themen 2
P Erste Schritte Zufallszahl in Ascii-Code umwandeln ?!? Java Basics - Anfänger-Themen 6
S String mit ASCII/HTML Zeichen darstellen Java Basics - Anfänger-Themen 10
C ASCII-Art Haus Java Basics - Anfänger-Themen 18
C ASCII CODES in Linux anders als auf Windows? Java Basics - Anfänger-Themen 4
J Ascii Zeichen von einem String umwandeln und ausgeben Java Basics - Anfänger-Themen 11
T String to ASCII Java Basics - Anfänger-Themen 3
K ASCII-Art mit for Schleife Java Basics - Anfänger-Themen 12
R ASCII-Tabelle Java Basics - Anfänger-Themen 6
achillesat aus .java in ascii datei Java Basics - Anfänger-Themen 12
D prüfen ob string nur ascii zeichen enthält Java Basics - Anfänger-Themen 7
G Textdokument ASCII ändern Java Basics - Anfänger-Themen 10
P Ascii Java Basics - Anfänger-Themen 4
C ASCII Codes in Buchstaben umwandeln Java Basics - Anfänger-Themen 2
T Ascii String zu Hex Wert wandeln? Java Basics - Anfänger-Themen 6
S Ascii Datei parsen Java Basics - Anfänger-Themen 2
S Hex-String in Ascii-String umwandeln! Java Basics - Anfänger-Themen 7
J String nur mit ASCII-Zeichen Java Basics - Anfänger-Themen 4
D Ascii-Code ersetzen mit Umlauten Java Basics - Anfänger-Themen 6
L Ausgabe in arabischen Zahlen statt in ASCII Java Basics - Anfänger-Themen 9
M Ascii-Filtering von Usereingaben Java Basics - Anfänger-Themen 3
K String(ASCII) to BigInteger Java Basics - Anfänger-Themen 2
T ASCII Tabelle darstellen Java Basics - Anfänger-Themen 7
G ASCII -> Unicode ? Java Basics - Anfänger-Themen 5
G ASCII -> String Java Basics - Anfänger-Themen 2
N Eclipse und ascii codes, welchen wählen? Java Basics - Anfänger-Themen 3
T byte 2 ASCII ? Java Basics - Anfänger-Themen 2
M Strings nach ASCII Zeichen trennen. Java Basics - Anfänger-Themen 7
C Überprüfung ob Eingabe Text/ASCII Java Basics - Anfänger-Themen 24
F Warum Ausgabe in ASCII Dez. Java Basics - Anfänger-Themen 3
L Fehler bei den ASCII Zeichen Java Basics - Anfänger-Themen 9
K ASCII Schnittstelle. Java Basics - Anfänger-Themen 3
T Bestimmte Zeilen aus ASCII File löschen? Java Basics - Anfänger-Themen 2
L auf ASCII Zeichen prüfen Java Basics - Anfänger-Themen 10
O Ascii Dateien schreiben Java Basics - Anfänger-Themen 5
H Escape Sequenz ASCII Wert als Oktalzahl Java Basics - Anfänger-Themen 6
B ASCII-Datei einlesen und zerlegen Java Basics - Anfänger-Themen 5
H ascii-xml Konverter Java Basics - Anfänger-Themen 4
B Formular-Eingabe in ASCII-Datei speichern Java Basics - Anfänger-Themen 3
S Umrechner Ascii Integer Java Basics - Anfänger-Themen 2
S printable ASCII output erzeugen Java Basics - Anfänger-Themen 3
G Ascii Zeichen? Java Basics - Anfänger-Themen 2
X ASCII-Code => Zeichen / Zeichen => ASCII-Code Java Basics - Anfänger-Themen 2
G Problem bei der Darstellung von bestimmten ASCII-Zeichen Java Basics - Anfänger-Themen 4
B speichern->"neueZeileZeichen"ASCII 1310 in 13 u Java Basics - Anfänger-Themen 10
W char in ASCII-Zeichen umwandeln Java Basics - Anfänger-Themen 4
Dilandau ascii code von zeichen in string ermitteln? Java Basics - Anfänger-Themen 9
G Berechnet ASCII-Code Java Basics - Anfänger-Themen 2
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
I Kamera anschließen / Bild machen / Live View / Externe Blitz Java Basics - Anfänger-Themen 19
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
H Artefact mit Bild erzeugen Java Basics - Anfänger-Themen 11
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
krgewb Bild itextpdf Java Basics - Anfänger-Themen 2
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
VPChief Bild in JEditorPane Java Basics - Anfänger-Themen 9
B Warum bekomme ich kein Bild. Java Basics - Anfänger-Themen 10
S Bild einfügen // NEU Java Basics - Anfänger-Themen 12
N Bild drehen Java Basics - Anfänger-Themen 3
S Ein Bild mit dynamischer Quelle neuzeichnen Java Basics - Anfänger-Themen 12
N GLOOP Bild nicht ansichtbar Java Basics - Anfänger-Themen 5
M Bild in JFrame Java Basics - Anfänger-Themen 1
B Signatur erstellen - Bild ist nur weiß Java Basics - Anfänger-Themen 0
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 17
CptK Interface Bild rotieren Java Basics - Anfänger-Themen 1
Anica Processing Animation Bild-Position ändern Java Basics - Anfänger-Themen 9
CptK Interface Bild über Methode ändern funktioniert nicht Java Basics - Anfänger-Themen 4
CptK Interface Curser durch Bild ersetzen & MouseListner Java Basics - Anfänger-Themen 2
M jTextPane Bild anzeigen Java Basics - Anfänger-Themen 6
CptK Bild beim betätigen eines JButtons Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben