B
Berger345
Gast
Hallo liebe Forummitglieder!
Ich zerreiße mir schon seit stunden den Kopf über meine Programmierhausübung. Folgende Lösung muss ich erstellen:
Implementieren Sie eine Methode void alignText(char[] text, int width), die den im
Parameter text enthaltenen Text linksbündig aligniert in die Konsole ausgibt, wobei
die Spaltenbreite width zu berücksichtigen ist. text enthält Wörter (Folge von
zusammenhängenden Buchstaben) und Leerzeichen, die die Wörter trennen.
Zwischen zwei Wörtern ist genau ein Leerzeichen. Jede Zeile wird bis zu width mit
ganzen Wörtern aufgefüllt. Hat ein Wort nicht mehr Platz, wird es in der nächsten
Zeile ausgedruckt. Ist ein Wort länger als width wird es ohne Trennzeichen
umgebrochen.
Nunja, ich habe schon mehrere verschiedene Versuche gestartet und die, die bisher am "besten" funktioniert hat, stelle ich hier rein:
Hier die Ausgabe der Konsole:
// Umbruch
ImplementierenSie
eine
MethodeException in thread "main" java.lang.ArrayIndexOutOfBoundsException: 32
at EPRUE0603.make(EPRUE0603.java:16)
at EPRUE0603.main(EPRUE0603.java:56)
Die Out of Bounce Exception bekommen ich wohl wegen dem Punkt.
Irgendwie funktionierts leider noch nicht ganz. ich wieß nicht, wie ich die Zerlegung eines Wortes, dass länger ist als width bewergstelligen soll. Ich muss ja wissen, wieviel in der nächsten Zeile dann noch übrig ist.
Oder gehe ich das komplett falsch an und sollte alles nochmal neu schreiben? und wenn ja, wie?
Danke im Vorraus!
Ich zerreiße mir schon seit stunden den Kopf über meine Programmierhausübung. Folgende Lösung muss ich erstellen:
Implementieren Sie eine Methode void alignText(char[] text, int width), die den im
Parameter text enthaltenen Text linksbündig aligniert in die Konsole ausgibt, wobei
die Spaltenbreite width zu berücksichtigen ist. text enthält Wörter (Folge von
zusammenhängenden Buchstaben) und Leerzeichen, die die Wörter trennen.
Zwischen zwei Wörtern ist genau ein Leerzeichen. Jede Zeile wird bis zu width mit
ganzen Wörtern aufgefüllt. Hat ein Wort nicht mehr Platz, wird es in der nächsten
Zeile ausgedruckt. Ist ein Wort länger als width wird es ohne Trennzeichen
umgebrochen.
Nunja, ich habe schon mehrere verschiedene Versuche gestartet und die, die bisher am "besten" funktioniert hat, stelle ich hier rein:
Code:
public class EPRUE0603
{
static void alignText(char[] text, int width)
{
int save = width;
char[] temp = new char[text.length];
int wText = -1;
while(wText < text.length)
{
int n = 0;
wText +=1;
while(text[wText+n] != ' ' && text[wText+n] != '.')
{
temp[n] = text[wText+n];
n++;
}
wText = wText + n;
if(n <= width)
{
print(temp, n);
width = width - n;
} else {
System.out.println(); //Umbruch
print(temp, n);
width = save;
}
}
}
static void print(char[] word, int length)
{
for(int i = 0; i < length; i++)
System.out.print(word[i]);
}
public static void main(String[] args)
{
char[] text = {
'I','m','p','l','e','m','e','n','t','i','e','r','e','n',' ',
'S','i','e',' ','e','i','n','e',' ','M','e','t','h','o','d','e','.'
};
alignText(text, 6);
}
}
Hier die Ausgabe der Konsole:
// Umbruch
ImplementierenSie
eine
MethodeException in thread "main" java.lang.ArrayIndexOutOfBoundsException: 32
at EPRUE0603.make(EPRUE0603.java:16)
at EPRUE0603.main(EPRUE0603.java:56)
Die Out of Bounce Exception bekommen ich wohl wegen dem Punkt.
Irgendwie funktionierts leider noch nicht ganz. ich wieß nicht, wie ich die Zerlegung eines Wortes, dass länger ist als width bewergstelligen soll. Ich muss ja wissen, wieviel in der nächsten Zeile dann noch übrig ist.
Oder gehe ich das komplett falsch an und sollte alles nochmal neu schreiben? und wenn ja, wie?
Danke im Vorraus!