Hi,
Hab ein Problem mit paar strings. Also ich hab den Konstruktor von ner Klasse, der erhält eine Liste von Zeilenstrings, also z.B. :
Text mw = new Text(“München”, “im”, “Winter”);
Nun soll daraus werden:
München
im
Winter
Anzahl der strings ist unbekannt. Also denk ich mir, dass man es so implimentieren kann,
dass man die Strings in einem Array packt, oder ist das der falsche Ansatz ?!
Also jeder String in ne neue Zeile. Da stolpere ich schonmal, ich komm nicht drauf wie man die einzelnen
Strings jeweils in einer neuen zeile schreibt. Dazu muss ich doch die “toString” methode definieren.
Hab mir das vielleicht so vorgestell, also auf Element zugreigen vom Array, dann System.out.ptintln ();
dann nächstes element usw. kann das funktionieren ?!
Ok darüberhinaus brauch man 3 Getter, einen für die Höhe (hier 3), einen für das längste Word (hier 7)
und einen für den Zeilenindex (im Beispiel i = 1: “im”). Hab mir gedacht, dass eigentlich
die Höhe mit dem Zeilenindex implementieren kann oder ? (Also Index vom Line + 1 = höhe)
bzw. die höhe kann ich doch auch abfragen, indem ich das Array nach der anzahl elementen frag
also
array.length = dann die höhe richtig ?
Das sind aber alles so Ideen, an dennen ich seit paar stunden rumhäng und rumprobier, aber an nichs gescheites und brauchbares komm. Weiss da einer weiter ?
public class Text implements Image
{
String[] s;
Text (String[] args)
{
s = args;
}
public int getHight()
{
return s.length;
}
public int getWeight()
{
String maximum = s [0];
int i = 1;
while(i < s.length)
{
if (s**.length() > maximum.length())
{
maximum = s**;
}
i++;
}
return maximum.length();
}
public String toString()
{
--------------?
}
public String getLine()
{
throw new UnsupportedOperationException("Not supported yet.");
}
}
Wenn ich dann aber die Testklasse aufruf mit:
public static void main(String[] args)
{
Text mw = new Text("München", "im", "Winter");
}
kommt der Fehler, dass bei der Klasse “Text” der Konstruktor mit " Text ( String, String, String) fehlt …
Wie pass ich das jetzt so an ?!
ach toll, hab [] mit … ersetzt geht jetzt thx, ich komm aber immernoch nicht drauf wie ich die einzelnen strings in der toString methode auf neue zeilen setzen kann ?!
ou sorry verlesen … habs geändert, und funktioniert trotzdem nicht, also hier nochmal die ganze klasse:
public class Text implements Image
{
String[] s;
Text (String... args)
{
s = args;
}
public int getHight()
{
return s.length;
}
public int getWeight()
{
String maximum = s [0];
int i = 1;
while(i < s.length)
{
if (s**.length() > maximum.length())
{
maximum = s**;
}
i++;
}
return maximum.length();
}
@Override
public String toString()
{
String x = "";
int i = 0;
while(i < s.length)
{
x = s** + "
";
}
i++;
return x;
}
public String getLine(int i)
{
return s**;
}
public void setLine(int i,String w)
{
s** = w;
}
}
Und womit ich teste nochmal:
public class TT {
public static void main(String[] args)
{
Text mw = new Text("München", "im", "Winter");
System.out.println(mw);
}
}
ja da kommt keine fehlermeldung, das Programm läuft einfach lange weiter ohne irgendwas anzuzeigen, bis ich es stoppe, weil ichn icht glaube dass es über 40 secunden dauert sowas auszugeben …
war groß genug -.-
hmm wie soll ichs erklären …
Die ausgabe geht nicht, das Objekr wird erstellt mit
Text mw = new Text("München", "im", "Winter");
ok das funktioniert einwandfrei, sobald ich aber eine ausgabe will, die so ausschauen sollte:
München
im
Winter
mit
System.out.println(mw);
passiert einfach garnichts, also kommt keine ausgabe, wobei ich mir denke dass etwas an der toString Methode nicht stimmt, aber keinen logischen fehler entdecke. Das Programm läuft einfach zu lange weiter ohne zum Ende zu kommen, wie in ner endlosschleife,… aber ich find eben keine bzw. den Fehler wieso keine Ausgabe kommt.
@Override
public String toString()
{
String x = "";
int i = 0;
while(i < s.length) //s.length in dem fall 3 weil es 3 wörter sind
{
x = s** + "
"; // nach jedem word wird
angehängt für neue zeile,
}
i++;
return x;
}
Da muss doch irgendwo der Wurm drin sein, aber sehs nicht