Java: Text als Blocksatz ausgeben?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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 :)


ANTWORTESOFORT 
Beitragsersteller
 16.01.2020, 20:37

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?

0
Kijoma3  16.01.2020, 21:28
@ANTWORTESOFORT

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

0
ANTWORTESOFORT 
Beitragsersteller
 16.01.2020, 20:30

Danke dir, hast mir echt geholfen :P

0
ANTWORTESOFORT 
Beitragsersteller
 16.01.2020, 20:29

ohh sry das Beispiel von dir hat bei mir nicht geladen

0
ANTWORTESOFORT 
Beitragsersteller
 16.01.2020, 20:26

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)

0
Kijoma3  16.01.2020, 20:33
@ANTWORTESOFORT

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));

0

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.

Woher ich das weiß:eigene Erfahrung

ANTWORTESOFORT 
Beitragsersteller
 16.01.2020, 19:46

Wie meinst du das? in java wollte ich es haben

0
ANTWORTESOFORT 
Beitragsersteller
 16.01.2020, 19:54
@Useer486

wo muss ich das rein? und kann ich auch die Zeichenanzahl angeben? kannst du mir n Beispiel zeigen bin n Anfänger :P

Danke

0