Hallo an alle,
Also folgende Aufgabe:
Es soll ein ASCII Bild eingelesen und validiert werden. Die Validierung besteht darin, zu überprüfen, ob die Zeilenlänge und die Anzahl der Zeilen des eingelesenen Bildes korrekt sind.
Sie sollen 2 Klassen programmieren:
* AsciiReader
* AsciiImage
AsciiReader: Die Klasse AsciiReader ist die ausführbare Klasse, welche die main-Methode beinhaltet. Diese Methode liest zunächst die Höhe und die Breite des Bildes und anschließend das Ascii-Bild selbst ein.
Die Gültigkeit soll beim Einlesen überprüft werden und das Programm bei einem Fehler mit FALSCHE EINGABE beendet werden.
AsciiImage: Die Klasse AsciiImage repräsentiert ein ASCII Bild. Die Klasse AsciiReader erstellt ein Objekt der Klasse AsciiImage um das Bild zu speichern. Diese Klasse soll Datenelemente zum speichern der Höhe des Bildes, der Breite des Bildes und der Zeilen des Bildes beinhalten. Sie können die einzelnen Zeilen des Bildes in einer einzigen Zeichenkette (Datenelement vom Typ String) speichern, indem Sie die Zeilen verketten. Die einzelnen Bildzeilen werden dabei mit "\n" getrennt. Andere Lösungen werden auch akzeptiert.
Die Klasse AsciiImage soll auch eine Methode zum Ausgeben (z.B. Methode void print()) des Bildes am Bildschirm besitzen. Diese Methode wird von AsciiReader aufgerufen um die verlangte Ausgabe zu erzeugen, wenn das Bild fehlerfrei eingelesen wurde.
Eine Methode
void addLine(String line)
soll die übergebene Zeile dem Bild hinzufügen.
Nebenbedingungen für Anzahl der Zeilen/Spalten des Bildes:
Die Höhe des Bildes darf 100 nicht überschreiten und muss größer 0 sein.
Die Breite des Bildes darf 100 nicht überschreiten und muss größer 0 sein. Jede Zeile muss die gleiche Breite haben.
AsciiReader
AsciiImage
Im Eclipse funktioniert es auch ohne Probleme, wenn ich es aber abgeben will und es automatisch kontrolliert wird kommt folgende Meldung bei jedem Test:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:838)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at AsciiReader.main(AsciiReader.java:13)
Ich versteh nicht ganz warum es bei mir im Eclipse geht, aber sobald ich es abgegeben habe es nicht funktioniert.
Vielen Dank für eure Hilfen!
mfg R4xx4r
Also folgende Aufgabe:
Es soll ein ASCII Bild eingelesen und validiert werden. Die Validierung besteht darin, zu überprüfen, ob die Zeilenlänge und die Anzahl der Zeilen des eingelesenen Bildes korrekt sind.
Sie sollen 2 Klassen programmieren:
* AsciiReader
* AsciiImage
AsciiReader: Die Klasse AsciiReader ist die ausführbare Klasse, welche die main-Methode beinhaltet. Diese Methode liest zunächst die Höhe und die Breite des Bildes und anschließend das Ascii-Bild selbst ein.
Die Gültigkeit soll beim Einlesen überprüft werden und das Programm bei einem Fehler mit FALSCHE EINGABE beendet werden.
AsciiImage: Die Klasse AsciiImage repräsentiert ein ASCII Bild. Die Klasse AsciiReader erstellt ein Objekt der Klasse AsciiImage um das Bild zu speichern. Diese Klasse soll Datenelemente zum speichern der Höhe des Bildes, der Breite des Bildes und der Zeilen des Bildes beinhalten. Sie können die einzelnen Zeilen des Bildes in einer einzigen Zeichenkette (Datenelement vom Typ String) speichern, indem Sie die Zeilen verketten. Die einzelnen Bildzeilen werden dabei mit "\n" getrennt. Andere Lösungen werden auch akzeptiert.
Die Klasse AsciiImage soll auch eine Methode zum Ausgeben (z.B. Methode void print()) des Bildes am Bildschirm besitzen. Diese Methode wird von AsciiReader aufgerufen um die verlangte Ausgabe zu erzeugen, wenn das Bild fehlerfrei eingelesen wurde.
Eine Methode
void addLine(String line)
soll die übergebene Zeile dem Bild hinzufügen.
Nebenbedingungen für Anzahl der Zeilen/Spalten des Bildes:
Die Höhe des Bildes darf 100 nicht überschreiten und muss größer 0 sein.
Die Breite des Bildes darf 100 nicht überschreiten und muss größer 0 sein. Jede Zeile muss die gleiche Breite haben.
AsciiReader
Java:
import java.util.Scanner;
class AsciiReader {
public static void main (String[] args) {
// Eingabe der Breite des Bildes = Zeichenanzahl
Scanner eingabeHoehe = new Scanner(System.in);
int h = eingabeHoehe.nextInt();
// Eingabe der Hoehe = Zeilenanzahl
Scanner eingabeBreite = new Scanner(System.in);
int b = eingabeBreite.nextInt();
// Anlegen eines Objektes der Klasse AsciiImage mit den Werten (Breite,Hoehe)
AsciiImage ai = new AsciiImage(h, b);
//Einlesen des Bildes
Scanner reader = new Scanner(System.in);
/* Abfrage für Nebenbedingungen
* Hoehe muss groesser 0 und kleiner,gleich 100 sein
* Breite muss groesser 0 und kleiner gleich 100 sein. Jede Zeile muss die gleiche Breite haben
*/
if(((h > 0) && (h <= 100)) && ((b > 0) && (b <= 100))) {
int counter = 0;
// Überprüfung des Bildes
while(reader.hasNextLine()){
String input = reader.nextLine();
int inputLen = input.length();
if(inputLen < b || inputLen > b){
break;
}
counter++;
ai.addLine(input);
}
if(counter == h)
ai.print();
else
System.out.println("FALSCHE EINGABE");
}
else
System.out.println("FALSCHE EINGABE");
}
}
AsciiImage
Java:
public class AsciiImage {
int hoehe;
int breite;
String picture = "";
AsciiImage (int hoehe, int breite){
this.hoehe = hoehe;
this.breite = breite;
}
public void addLine(String line){
// Diese Methode soll die übergebene Zeile dem Bild hinzufügen
picture += line + "\n";
}
public void print(){
/* Methode zur Ausgabe des Bildes
* Diese Methode wird von AsciiReader aufgerufen um die verlangte Ausgabe zu erzeugen, wenn das Bild fehlerfrei eingelesen wurde.
*/
System.out.println(picture);
}
}
Im Eclipse funktioniert es auch ohne Probleme, wenn ich es aber abgeben will und es automatisch kontrolliert wird kommt folgende Meldung bei jedem Test:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:838)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at AsciiReader.main(AsciiReader.java:13)
Ich versteh nicht ganz warum es bei mir im Eclipse geht, aber sobald ich es abgegeben habe es nicht funktioniert.
Vielen Dank für eure Hilfen!
mfg R4xx4r