Hey Leute
ein Freund hat mir diesen Source zukommen lassen damit ich ih versteh als Übung.... Jedoch check ich manches ned:
ICh freu mich schon auf eure Antwort und bin schon gespannt was die von mir makierten Zeilen bedeuten....
greetz von einem ein bissl verwirrten
pisco
PS.:Ich bedank mich bei euch schon amal im Vorraus....
ein Freund hat mir diesen Source zukommen lassen damit ich ih versteh als Übung.... Jedoch check ich manches ned:
Java:
class AsciiImage{
private String picture = new String();
private int high=0;
private int length=0;//höhe ,länge des bildes
AsciiImage()
{
this.picture = new String();
this.high =0;
this.length =0;
}
/*Funktion addLine()
fügt dem Bild eine Zeile hinzu.
Beim Hinzufügen der ersten Zeile wird die Breite des Bildes festgelegt.
Ist die erste Zeile nicht mindestens ein Zeichen breit, so wird false zurückgegeben
, andernfalls definiert die Länge der Zeile die Breite des Bildes.
Danach übergebene Bildzeilen müssen dieser Breite entsprechen,
ansonsten gibt die Methode false zurück.
Diese Methode aktualisiert Höhe, Breite.
*/
public boolean addLine(String line) {
boolean error = true;
if (this.picture.isEmpty()) { //hier wird auf LEERE geprüft
this.length = line.length();
}
if (line.isEmpty() || line.length() != this.length) {//hier wird geprüft ob
error = false;
} else {
this.picture += line; //die Zeichen weden hinzugefügt nach jedem durch lauf(zbsp.: in einer Schleife)
this.high++;//high = high + 1
}
return error;//error wird nach Beendigungen aller if-Abfragen zurückgegeben
//weil die addLine eine boolean var ist
}
public int getUniqueChars() {//gibt zurück wieviele unterschiedliche Zeichen im Bild vorkommen. So enthält das einzeilige Bild abaaabac 3 unterschiedliche Zeichen.
int counter = 0;
String puffer = new String();;//unser Puffer
for (int i = 0; i < this.picture.length(); i++) {//wenn i größer ist als die Länge des Bildes dann break
if (!puffer.contains(String.valueOf(this.picture.charAt(i)))) {//wenn der Puffer nicht beinhalter einen String mit dem Wert den das Bild auf der Poition i besitzt dann wird der if Teil ausgeführt
puffer += String.valueOf(this.picture.charAt(i));//im Puffer wird dieses Zeichen gespeichert
counter++;//dann wird der Counter um 1ns erhöht
}
}
return counter;//der Counter wird zurückgegeben
}
/*--------------------------------------------------------------------------------------------------------------*/
//HIER FÄNGT DER NON UNDERSTOODABLE TEIL AN:
public void flipV() {//dreht das Bild vertikal um, vertauscht die erste mit der letzten, die zweite mit der vorletzten
String puffer = new String();//warum erzeugt er ein objekt vom typ String kann ich nicht auch einfach ein: String p=""; nehmen?
for (int i = 0; i < this.high; i++) {
for (int j = 0; j < this.length; j++) {
puffer += String.valueOf(this.getPixel(j, (this.high - 1 - i) * this.length));// was macht diese Zeile? get Pixel gibt definitiv die Koordinaten an jedoch wie? warum high-1-i* thid.lenght?
//getPixel(int x, in y); gibt das Zeichen an der entsprechenden x/y-Position zurück
}
}
this.picture = puffer;
}
public void transpose() {
String puffer = new String();
int lengthNew = this.high;
for (int i = 0; i < this.length; i++) {
for (int j = 0; j < this.high; j++) {
puffer += String.valueOf(this.getPixel(i, j * this.length));//was macht diese Zeile
}
}
this.high = this.length;
this.length = lengthNew;
this.picture = puffer;
}
private char getPixel(int x, int y) {
char c;
c = this.picture.charAt(x + y);//Zeichen an der Stelle (x/y) im Koordinatensystem;
return c;
}
public String toString() {//gibt eine lesbare Darstellung des ASCII-Bildes zurück. Die einzelnen Zeilen sollen dabei durch Zeilenumbrüche ‘\n’ getrennt werden.
String puffer = new String();
for (int i = 1; i <= this.picture.length(); i++) {
puffer += String.valueOf(this.picture.charAt(i - 1));
if (i % this.length == 0) {
puffer += "\n";
}
}
return puffer;
}
public int getHeight() {
return this.high;
}
public int getLength() {
return this.length;
}
// diese Funktion ist mir generell nicht ganz klar.. was macht sie
public boolean isSymmetricH() {
boolean isSymH = true;
for (int i = 0; i < this.length / 2; i++) {
for (int j = 0; j < this.high; j++) {
if ((this.picture.charAt(i + j * this.length)) != (this.picture.charAt((this.length - 1 - i) + j * this.length))) {
isSymH = false;
break;
}
}
}
return isSymH;
}
}
ICh freu mich schon auf eure Antwort und bin schon gespannt was die von mir makierten Zeilen bedeuten....
greetz von einem ein bissl verwirrten
pisco
PS.:Ich bedank mich bei euch schon amal im Vorraus....