Java: Text als Blocksatz ausgeben?
Hallo,
würde gerne Wissen wie ich einen eingegebenen Text in Java als Blocksatz ausgeben kann. So dass z.B. nach 15 Zeichen automatisch umgebrochen wird.
Danke im Voraus,
-
3 Antworten
Hey. Dafür müsstets du eine Methode schreiben. Das habe ich jetzt mal für dich übernommen :)
Füge einfach die gleich folgende Methode in dein Quellcode ein und verwende die Methode beim ausgeben des gewünschten Textes.
Syntax: blocktext(deinString, maxZeichenProZeile);
------------------------------------------------------------------------------------------------------------------------------------
Methode:
public static String blocksatz(String text, int lang) {
int lange = text.length();
String block ="";
for(int i=0; i<lange;i=i+lang) {
if(i+lang>=lange) {
lang = lang - (i + lang - lange);
}
block = block + text.substring(i, i+lang) + " \n ";
}
return block;
}
Und hier eine ganze Ausgabe als Beispiel:
package programm;
public class main {
public static void main(String[] args) {
String testText = "Haaaaallloooooooooo";
System.out.println(blocksatz(testText, 5)); //Methode blocksatz ausgeben -> blocksatz(Text, Zeilenlänge);
}
//-----------------Methode für Blocksatz-----------------
public static String blocksatz(String text, int lang) {
int lange = text.length();
String block ="";
for(int i=0; i<lange;i=i+lang) {
if(i+lang>=lange) {
lang = lang - (i + lang - lange);
}
block = block + text.substring(i, i+lang) + " \n ";
}
return block;
}
}
Hoffe es hilft :)
Ja deshalb habe ich als erstes nur die Methode geschickt. Das Beispiel Programm solltest du nicht kopieren. Da meine Datei Mail hieß steht es auch so im Beispiel Quellcode.
Kopiere einfach den ersten Quellcode von mir in der nicht das ganze Programm drin ist. Das musst du nun außerhalb unter der „Public static void main“ Methode einfügen (Bzw. Eine Zeile über die letzte geschweifte Klammer die sich ganz unten in deiner Datei schließt).
wenn du das gemacht hast kannst du die Methode benutzen
Perfekt dann kannst du das letzte Kommentar von mir ignorieren :D
ohh sry das Beispiel von dir hat bei mir nicht geladen
boah großes Danke, habe ich sehr gebraucht.
hab aber nicht so ganz verstanden wo ich blocktext(meinString, maxZeichenProZeile) einsetzen muss (bin noch ein Anfänger, sorry für die Fragen)
Das soll nirgendwo hin :) War ein Beispiel damit du weißt wo was eingetragen werden muss. Ich versuch das mal irgendwie verständlicher zu schrieben:
In dem letzten Quellcode meiner Antwort siehst du ja ein Beispiel Programm.
Da gebe ich mit dem Befehl System.out.println() die Methode blocksatz() aus.
und in die Klammer vom Blocksatz müssen 2 Werte rein. Einmal der Text der zum Blocksatz gemacht werden soll und einmal die Maximale Anzahl von Zeichen pro Zeile. Also wenn du den Text "AAAAAAAAAAAAAAAAAAAAA"
als Blocksatz mit z.B. 7 Zeichen pro Zeile schrieben willst gibst du folgendes bei der Ausgabe ein:
System.out.println(blocksatz("AAAAAAAAAAAAAAAAAAAAA", 7));
Also ich würde so vorgehen:
Den Text als String speichern und dann mits tring.split("\\s+") als Array speichern, welches die Wörter der Strings enthält. ("\\s+" bricht den String an allen Whitespaces auf).
Als nächstes durch die Liste iterieren und schauen, wann die Wörter mit den Leerzeichen knapp unter der Zeichenschwelle sind. Die bis zur Schwelle Fehlenden Zeichen als Leerzeichen gleichmäßig zwischen den Worten aufteilen (wobei das sicher nicht glatt laufen wird, du musst also überlegen, wie du es aufteilen willst)
Dann die jeweiligen Zeilen mit
println(wort 1 + Leerzeichen + wort 2 + ...)
ausgeben.
Die letzte Zeile kannst du dann einfach ohne Leerzeichen ausgeben.
Du müsstest jedoch noch den Fall betrachten, dass die Länge des Wortes länger ist als die Schwelle, dann musst du es wohl aufspalten müssen
Das kannst du mit "\n" machen, wenn du das meinst.
In dem String musst du "\n" eingeben, und du bekommst einen Blocksatz
wo muss ich das rein? und kann ich auch die Zeichenanzahl angeben? kannst du mir n Beispiel zeigen bin n Anfänger :P
Danke
Keine Ahnung warum, aber das Programm kann ich nicht ausführen.
Fehler: Hauptklasse main konnte nicht gefunden oder geladen werden
Liegt wohl am Namen, oder?