Kürzel: | asciishop-A01-pp |
Name: | AsciiShop, Runde#1 |
Kette: | Asciishop PP |
Kategorie: | Bildverarbeitung |
Mitgelieferte Datei(en):
Abzugebende Datei(en): AsciiShop.java
Optional abzugebende Datei(en):
Ausführbar: AsciiShop
Die Klasse AsciiShop ist zu erstellen und soll eine ausführbare Klasse sein und muss daher die public static void main(String[] args) Methode beinhalten. Ihr Programm wird automatisch auf Korrektheit überprüft. Die Überprüfung erfolgt durch die Ausführung der als ausführbar bezeichneten Klasse (AsciiShop).
Das Programm soll ein ASCII-Bild zeilenweise von der Standardeingabe einlesen und überprüfen, ob alle Zeilen gleich lang sind. Nach dem Einlesen wird die Höhe und die Breite des Bildes (sprich Länge und Anzahl der Zeilen) ausgegeben. Sollte die Eingabe fehlerhaft sein, so wird stattdessen eine Fehlermeldung ausgegeben.
Aufgabenstellung | Klassen und Methoden | Ein- und Ausgabedaten | Bewertung und Kriterien |
Hinweise | FAQ | Fehlerbehandlung | Testen |
Bei einem ASCII-Bild werden die unterschiedlichen Helligkeitswerte (Pixel) eines Graustufenbildes durch ASCII-Zeichen dargestellt. Dies war vor der Einführung von grafikfähigen Computern die einzige Darstellungsmöglichkeit von bildähnlichen Objekten und hält sich bis heute in E-Mail Signaturen und den bekannten Emoticons.
......................................... .....!\_________________________/!\...... .....!!.........................!!.\..... .....!!.........................!!..\.... .....!!.........................!!..!.... .....!!..........EPROG..........!!..!.... .....!!.........................!!..!.... .....!!.........................!!..!.... .....!!.........................!!..!.... .....!!.........................!!../.... .....!!_________________________!!./..... .....!/_________________________\!/...... ........__\_________________/__/!_....... .......!_______________________!/.)...... .....________________________....(__..... ..../oooo..oooo..oooo..oooo./!..._..)_... .../ooooooooooooooooooooooo/./..(_)_(_).. ../ooooooooooooooooooooooo/./....(o.o)... ./C=_____________________/_/....==\o/==.. ......................................... |
Das Programm soll ein solches Bild zeilenweise von der Standardeingabe einlesen. Lassen Sie Ihr Programm solange Bildzeilen einlesen, bis das Ende der Eingabe erreicht ist. Zählen Sie dabei mit, wie viele Zeilen bereits eingelesen wurden und überprüfen Sie weiters, ob jede neu eingelesene Zeile gleich lang wie die bisher eingelesenen ist. Ist eine Zeile länger oder kürzer, so wird das Einlesen abgebrochen und "INPUT MISMATCH
" in einer eigenen Zeile über die Standardausgabe ausgegeben. Sind alle Zeilen gleich lang, so wird nach Einlesen der letzten Zeile die Breite und Höhe des eingelesen ASCII-Bildes in einer Zeile über die Standardausgabe ausgegeben.
public static void main(String[] args)
System.exit(1)
-artige Unterbrechungen in Ihrem Programm.
Am besten verzichten Sie völlig auf System.exit() Aufrufe da dadurch der
laufende JVM gewaltsam terminiert wird.Scanner
zum Einlesen von Daten.System.out.print
und
System.out.println
benutzen. Zum Erzeugen formatierter Ausgaben können
Sie auch System.out.printf
benutzen (wird im Allgemeinen aber nicht benötigt).
Beachten Sie, dass wir bei der Beurteilung einen US-amerikanischen Region- und
Spracheinstellungssatz (locale) für die Beurteilung benutzen.
Das bedeutet, dass wir für die Darstellung von double
-Werten auch bei
der Ein-/Ausgabe immer den Dezimalpunkt (und nicht Beistrich) benutzen
(z.B. 3.14159 und nicht 3,14159). Falls Sie auf Ihrem Rechner eine andere Einstellung haben,
können Sie zum Testen zuhause auch die Darstellung mit Beistrich benutzen (ist aber nicht
konsistent mit den mitgelieferten Ein-/Ausgabe-Paaren) oder beim Aufruf von Java auch folgenden Befehl
benutzen:
java -Duser.language=en -Duser.country=US AsciiShop
double
-Werten eine Darstellung mit Dezimalpunkt erwartet wird.
Wenden Sie sich bei Problemen mit den Ein-/Ausgabefunktionen bitte an die Tutoren im Labor.
String
finden Sie im Skriptum oder in den Vorlesungsfolien.
Verwenden Sie zum Einlesen des Bildes von der Standardeingabe die Klasse Scanner
. Relevant sind insbesondere die Methoden next
und hasNext
bzw. nextLine
und hasNextLine
.
Zum Bestimmen der Zeilenlänge bietet die Klasse String
die Methode length
.
Für die Ausgabe über die Standardausgabe verwenden Sie die Methoden System.out.print
und System.out.println
.
Es gibt zwei Möglichkeiten Ihr Programm zu testen: Sie können einerseits Eingaben in der Console vornehmen - entweder per direkter Eingabe oder auch per Einfügen von der Zwischenablage. Um die Eingaben in der Console abzuschließen, geben Sie einen Zeilenumbruch gefolgt vom EOF-Zeichen (Tastenkombination Strg+Z (Windows) bzw. Strg+D (Mac, Linux)) ein. Das EOF-Zeichen muss dabei am Anfang einer Zeile stehen, geben Sie also beispielsweise nach der letzten Bildzeile Enter und dann Strg+Z/Strg+D ein.
Andererseits können Sie den Inhalt einer Datei als Eingabe verwenden: java MyProgram < input.txt > output.txt
. Hierbei wird der Inhalt der Datei input.txt gelesen und als Eingabe an MyProgram weitergereicht. Die gesamte Ausgabe wird in die Datei output.txt geschrieben.
Im Rahmen des Abschlussgesprächs wird die Abgabe nach Kriterien wie Dokumentation (sprich Kommentare), Übersichtlichkeit des Codes, Verständnis, etc. beurteilt.
Wenn Sie Fragen zur Implementierung oder auch zu Java haben, können Sie das Informatik-Forum nutzen. Im Rahmen der wöchentlichen Laborien stehen Tutoren für Fragen zur Verfügung. | ||
Informatik-Forum | Laborien |
Ein ASCII-Bild mit beliebig vielen Zeichen, wobei Sie davon ausgehen dürfen, dass das Bild keine Leerzeichen enthält.
Die Breite und Höhe des ASCII-Bildes in einer Zeile durch ein Leerzeichen getrennt.
Geben Sie "INPUT MISMATCH
" aus, falls das Bild der Anforderung widerspricht und nicht alle Zeilen gleich lang sind.
|
||||||
|
||||||
|