Kürzel: | asciishop-A02-PP |
Name: | AsciiShop, Runde#2 |
Kette: | Asciishop PP |
Kategorie: | Drawing |
Mitgelieferte Datei(en):
Abzugebende Datei(en): BarPlot.java
Optional abzugebende Datei(en):
Ausführbar: BarPlot
Die Klasse BarPlot 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 (BarPlot).
Aufgabenstellung | Klassen und Methoden | Ein- und Ausgabedaten | Bewertung und Kriterien |
Hinweise | FAQ | Fehlerbehandlung | Testen |
Das Programm BarPlot
generiert anhand der Eingabe horizontale Balkendiagramme, die aus einer Beschriftung und einem Balken bestehen.
Die Formatierung sieht für die Beschriftung 8 Zeichen vor, gefolgt von einem '|' und dem maximal 30 Zeichen langen Balken bestehend aus dem Zeichen '#'. Falls der Balken nicht die vollen 30 Zeichen ausschöpft, wird mit Leerzeichen aufgefüllt. An letzter Stelle wird wieder ein '|' angehängt, das Diagramm ist also immer 40 Zeichen breit.
Beim Einlesen der Werte muss zwischen Fließkommazahlen und Ganzzahlen unterschieden werden. Nützen Sie dazu die Methoden hasNextDouble() und hasNextInt() des Scanners. Ganzzahlen müssen zwischen inklusive 0 und 30 liegen und entsprechen 1:1 der Anzahl der angezeigten Balken. Fließkommazahlen liegen zwischen 0.0 und 1.0 und beschreiben die prozentuale Länge des Balkens.
Die folgende Aufzählung umfasst geforderte Klassen und Methoden. Sie können nach Bedarf Hilfsmethoden hinzufügen.
main
-Methode. Sie verarbeitet die Eingaben, ruft alle Methoden auf und gibt das Ergebnis aus.
public static void main(String[] args)
System.in
ein und gibt direkt auf System.out
aus.static String repeat(char c, int n)
repeat('+',4)
den String "++++"
zurück).static String drawLabel(String label, int n)
drawLabel("abc",5)
den String "abc "
zurück.static String drawBar(String label, int value)
static String drawBar(String label, double value)
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 Folien der Vorlesung.
Achten Sie bei der Implementierung der geforderten Methoden darauf, dass dieselbe Folge von Anweisungen nicht mehrfach (z.B. in verschiedenen Methoden) auftritt (kein duplizierter Code). Beispielsweise kann die Methode repeat
sowohl zum Erstellen der Balken als auch zum Füllen einer Zeichenkette mit Leerzeichen benutzt werden. Die dafür notwendige Schleife sollte nur in repeat
geschrieben werden und nicht an weiteren Stellen im Programm vorkommen.
Für das Einlesen von Daten von der Standardeingabe verwenden Sie die Klasse Scanner
. Beispiele für die Verwendung der Klasse Scanner finden Sie im Skriptum oder in den Folien der Vorlesung.
Für die Ausgabe über die Standardausgabe verwenden Sie die Methoden System.out.print
und System.out.println
.
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 |
Es werden Balkenbeschriftungen als Wort gefolgt von einer Zahl, die die Balkenlänge angibt, paarweise eingelesen. Die Zahl kann Ganzzahl oder Fließkommazahl sein. Wird eine Ganzzahl eingelesen, gibt diese die absolute Balkenlänge (0-30) an. Wird eine Fließkommazahl eingelesen, so gibt diese einen Prozentwert an. Die Fließkommazahl muss dabei zwischen 0.0 (0%) und 1.0 (100% = Balkenlänge 30) liegen.
Für jedes eingelesenes Datenpaar wird die Balkenbeschriftung und ein horizontaler Balken ausgegeben.
Wenn ein ungültiger Wert eingelesen wird, oder ein Teil der Eingabe fehlt (wenn beispielsweise eine Beschriftung ohne nachfolgende Zahl in der Eingabe vorliegt), soll "INPUT ERROR" ausgegeben und das Programm beendet werden.
|
||||||
|
||||||
|
||||||
|