Hallo an alle!
Ich habe bei meiner nächsten Uni Aufgabe wieder ein Problem und hoffe auf eure Hilfe
Also meine Probleme sind folgende:
1) das mit dem spiegeln hab ich null plan wie ich das anstellen soll
2) Bis jetzt gibt er mir das bild normal aus nur habe ich am Anfang ein null stehen und hab keine ahnung woher das kommt
3) nach meinem bild sollte er mir die breite und die hoehe ausgeben. es funktioniert hier aber nur die hoehe und nicht die breite. kann mir wer sagen warum ?
Aufgabenstellung ist folgende:
-----------------------------------------------------------------------------------------------
Es soll ein ASCII Bild eingelesen und validiert werden. Die Validierung besteht diesmal darin, zu überprüfen, ob die Zeilenlänge in allen Zeilen die gleiche ist. Weiters soll das Bild nicht grösser als 100 Zeilen und 100 Spalten sein. Das Bild soll dann auf den Kopf gestellt (Letzte Zeile als erstes) ausgegeben werden. Sie sollen 2 Klassen programmieren:
* AsciiReader
* AsciiImage
AsciiReader: Die Klasse AsciiReader ist die ausführbare Klasse, welche die main-Methode beinhaltet. Diese Methode liest das Ascii-Bild Zeile für Zeile ein.
Die Gültigkeit soll beim Einlesen überprüft werden und das Programm bei einem Fehler mit FALSCHE EINGABE beendet werden. Alternativ kann die Methode addLine() der Klasse AsciiImage die Überpüfung durchführen und einen boolean Wert liefern, der false ist wenn ein Fehler aufgetreten ist (hier gibt es auch andere Möglichkeiten, die auch akzeptiert werden).
AsciiImage: Die Klasse AsciiImage repräsentiert ein ASCII Bild. Die Klasse AsciiReader erstellt ein Objekt der Klasse AsciiImage um das Bild auf den Kopf gestellt 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.
Datenkapselung:
Die Datenelemente von AsciiImage sollen nicht direkt von fremden Klassen zugreifbar sein. Verwenden Sie hier den Modifier private. Stattdessen soll die Klasse AsciiImage die benötigten Methoden zum Lesen und (wo sinnvoll) zum Schreiben der Datenelemente zur Verfügung stellen. So soll es z.B. eine spezielle Methode addLine(String line) geben, die die übergebene Zeile dem Bild hinzufügt. addLine(String) ist also eine Methode mit der der Bildinhalt in kontrollierter Weise geändert werden kann. Beachten Sie, dass addLine(String) die Höhe des Bildes verändert (d.h. der Wert des entsprechenden Datenelements muss neu gesetzt werden). Vor dem ersten Hinzufügen einer Zeile ist die Hö,he des Bildes 0. Die Methode soll die Zeile nur dann hinzufügen, wenn diese die richtige Länge hat (Die richtige Länge der Zeile kann mit einem entsprechenden Konstrukturparameter festgelegt werden, oder durch die Länge der ersten eingelesenen Zeile bestimmt werden). Die Methode kann einen boolean-Wert zurückliefern, der angibt, ob die Zeile hinzugefügt wurde, oder ob es einen Fehler gegeben hat (falsche Länge der Zeile).
Weiters soll es die Methode toString() geben, mit der der Bildinhalt gelesen werden kann. Ebenso soll es Auskunftsmethoden (Getter) für Höhe und Breite des Bildes geben. Methoden zum Setzen (Setter) von Höhe und Breite sind in diesem Beispiel nicht notwendig, da die Bilddimension beim Einlesen festgelegt wird (z.B. ändert sich die Höhe des Bildes nur durch das Hinzufügen von Zeilen mit addLine).
Erstellen Sie den (die) zu Ihrem Entwurf passenden Konstruktor(en).
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.
-----------------------------------------------------------------------------------------------
und hier mein code:
AsciiReader:
AsciiImage:
Vielen Dank an alle die sich die Mühe machen meinen Text zu lesen und mir zu helfen!!!
mfg,
R4xx4r
Ich habe bei meiner nächsten Uni Aufgabe wieder ein Problem und hoffe auf eure Hilfe
Also meine Probleme sind folgende:
1) das mit dem spiegeln hab ich null plan wie ich das anstellen soll
2) Bis jetzt gibt er mir das bild normal aus nur habe ich am Anfang ein null stehen und hab keine ahnung woher das kommt
3) nach meinem bild sollte er mir die breite und die hoehe ausgeben. es funktioniert hier aber nur die hoehe und nicht die breite. kann mir wer sagen warum ?
Aufgabenstellung ist folgende:
-----------------------------------------------------------------------------------------------
Es soll ein ASCII Bild eingelesen und validiert werden. Die Validierung besteht diesmal darin, zu überprüfen, ob die Zeilenlänge in allen Zeilen die gleiche ist. Weiters soll das Bild nicht grösser als 100 Zeilen und 100 Spalten sein. Das Bild soll dann auf den Kopf gestellt (Letzte Zeile als erstes) ausgegeben werden. Sie sollen 2 Klassen programmieren:
* AsciiReader
* AsciiImage
AsciiReader: Die Klasse AsciiReader ist die ausführbare Klasse, welche die main-Methode beinhaltet. Diese Methode liest das Ascii-Bild Zeile für Zeile ein.
Die Gültigkeit soll beim Einlesen überprüft werden und das Programm bei einem Fehler mit FALSCHE EINGABE beendet werden. Alternativ kann die Methode addLine() der Klasse AsciiImage die Überpüfung durchführen und einen boolean Wert liefern, der false ist wenn ein Fehler aufgetreten ist (hier gibt es auch andere Möglichkeiten, die auch akzeptiert werden).
AsciiImage: Die Klasse AsciiImage repräsentiert ein ASCII Bild. Die Klasse AsciiReader erstellt ein Objekt der Klasse AsciiImage um das Bild auf den Kopf gestellt 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.
Datenkapselung:
Die Datenelemente von AsciiImage sollen nicht direkt von fremden Klassen zugreifbar sein. Verwenden Sie hier den Modifier private. Stattdessen soll die Klasse AsciiImage die benötigten Methoden zum Lesen und (wo sinnvoll) zum Schreiben der Datenelemente zur Verfügung stellen. So soll es z.B. eine spezielle Methode addLine(String line) geben, die die übergebene Zeile dem Bild hinzufügt. addLine(String) ist also eine Methode mit der der Bildinhalt in kontrollierter Weise geändert werden kann. Beachten Sie, dass addLine(String) die Höhe des Bildes verändert (d.h. der Wert des entsprechenden Datenelements muss neu gesetzt werden). Vor dem ersten Hinzufügen einer Zeile ist die Hö,he des Bildes 0. Die Methode soll die Zeile nur dann hinzufügen, wenn diese die richtige Länge hat (Die richtige Länge der Zeile kann mit einem entsprechenden Konstrukturparameter festgelegt werden, oder durch die Länge der ersten eingelesenen Zeile bestimmt werden). Die Methode kann einen boolean-Wert zurückliefern, der angibt, ob die Zeile hinzugefügt wurde, oder ob es einen Fehler gegeben hat (falsche Länge der Zeile).
Weiters soll es die Methode toString() geben, mit der der Bildinhalt gelesen werden kann. Ebenso soll es Auskunftsmethoden (Getter) für Höhe und Breite des Bildes geben. Methoden zum Setzen (Setter) von Höhe und Breite sind in diesem Beispiel nicht notwendig, da die Bilddimension beim Einlesen festgelegt wird (z.B. ändert sich die Höhe des Bildes nur durch das Hinzufügen von Zeilen mit addLine).
Erstellen Sie den (die) zu Ihrem Entwurf passenden Konstruktor(en).
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.
-----------------------------------------------------------------------------------------------
und hier mein code:
AsciiReader:
Java:
import java.util.Scanner;
class AsciiReader{
public static void main (String [] args){
AsciiImage ai = new AsciiImage();
Scanner reader = new Scanner(System.in);
String input = reader.nextLine();
int FirstLineBreite = input.length();
int LineBreite;
int LineHoehe = 0;
while (reader.hasNextLine()){
input = reader.nextLine();
LineBreite = input.length();
LineHoehe++;
ai.addLine(input);
ai.setBreite(LineBreite);
if (LineBreite != FirstLineBreite || LineBreite > 100 || LineBreite == 0){
break;
}
}
if (LineHoehe > 100 || LineHoehe < 0) {
System.out.println("FALSCHE EINGABE");
}
else {
ai.setHoehe(LineHoehe);
System.out.println(ai.getPicture());
System.out.println(ai.getHoehe() + " " + ai.getBreite());
}
}
}
AsciiImage:
Java:
public class AsciiImage {
private int hoehe;
private int breite;
private String picture;
void addLine(String line){
picture += line + "\n" ;
}
public String getPicture(){
return picture;
}
public void setHoehe(int hoehe){
this.hoehe = hoehe;
}
public void setBreite(int breite){
this.breite = breite;
}
public int getHoehe(){
return hoehe;
}
public int getBreite(){
return breite;
}
}
Vielen Dank an alle die sich die Mühe machen meinen Text zu lesen und mir zu helfen!!!
mfg,
R4xx4r