hard wrap selber programmieren

Beispiel0

Mitglied
Ich finde kein Tool das das vernünftig kann... Vielleicht bin ich auch zu dämlich 🙈

Jedenfalls ist hier mein Versuch:

Java:
import java.util.Scanner;

public class TextWrap {
    public static void main(String[] args) {
        System.out.println("Enter Text:");
        String s1 = new Scanner(System.in).nextLine();
        while (true) {
            System.out.println("Length:");
            int o = new Scanner(System.in).nextInt();
            if (o <= 0) {
                break;
            }
            String[] split = s1.split(" ");
            int i = 0;
            for (String s : split) {
                i += s.length();
                if (i < o) {
                    System.out.print(s + " ");
                } else {
                    System.out.println(s);
                    i = 0;
                }
            }
        }
    }
}

Code:
Enter Text:
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
Length:
10
Lorem ipsum
dolor sit amet,
consetetur
sadipscing
elitr, sed diam
nonumy eirmod
tempor invidunt
ut labore et
dolore magna
aliquyam erat,
sed diam voluptua.
At

Wie man sieht, sieht der Text aber immer noch scheiße nicht gut aus.

Was muss ich ändern? Die Zeilen sind zu lang.
 

httpdigest

Top Contributor
Naja, das Problem ist dieser else-Zweig:
Java:
} else {
  System.out.println(s);
  i = 0;
Wenn du merkst, dass der String `s` die Länge sprengen würde, gibst du aber dennoch noch 's' aus.
Das könntest du ändern zu:
Java:
String[] split = s1.split(" ");
int i = 0;
for (String s : split) {
    int len = s.length();
    if (i + len > o) {
      System.out.println();
      i = 0;
    }
    System.out.print(s + " ");
    i += len;
}
 

httpdigest

Top Contributor
Kommt halt drauf an, was du willst. Wenn du willst, dass alle Zeilen _exakt_ gleich lang sind, also Blocksatz... das geht natürlich nicht. Bzw. nur, wenn du die Sachen nicht auf einer Konsole ausgibst, sondern wirklich einen Typesetter/Font-renderer implementierst mit kleinen Abständen zwischen den Zeichen, so dass alle Zeilen gleich lang aussehen, auch wenn sie unterschiedlich viele Zeichen beinhalten.
 

Beispiel0

Mitglied
oder mono fonts hernimmst ( die sowieso besser als alle anderen sind :p )
Das meinte @httpdigest glaube ich nicht, und ich auch nicht...

Man kann ja genau nach zB 10 Zeichen trennen, dann sind allerdings die Wörter kaputt.

Oder man trennt wörterweise. Dann muss man die "Zwischenräume" aber iwie auffüllen. Unabhängig vom Monospace Font.

Oder man trennt Silbenweise... Problem: Hab nicht Linguistik studiert...

Oder gäbe es da noch eine andere Möglichkeit, ohne Renderer?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Hard References Allgemeine Java-Themen 3
NoahPillich Navigations-App und Wegfindung selber programmieren - Erfahrungen, Ideen, Anregungen Allgemeine Java-Themen 6
N 3D-Grafik 3D Grafik selber bauen Allgemeine Java-Themen 0
volcanos JavaFX-Programme nur in NetBeans selber ausführbar ! command_line: NoClassDefFoundError Allgemeine Java-Themen 39
S Klickbare Stacktraces selber erzeugen..? Allgemeine Java-Themen 9
L Einfache Navigations-App schnell selber Programmieren? Bitte um Ideen und Anregungen. Allgemeine Java-Themen 17
S Java-Task-Management-Tool für Windows und Mac selber programmieren Allgemeine Java-Themen 4
E POI-InputStream selber wählen Allgemeine Java-Themen 2
E selber Klassen kompilieren/ prüfen Allgemeine Java-Themen 5
W sql Query abspeichern selber variabele hilfe...? Allgemeine Java-Themen 16
reibi Eclipse PlugIn selber programmieren Allgemeine Java-Themen 3
T einen SVN- oder QVCS-Client selber programmieren Allgemeine Java-Themen 2
T HashMap#get neues Objekt, selber Inhalt Allgemeine Java-Themen 12
M MP3 Datei selber parsen/werte auslesen Allgemeine Java-Themen 13
X JRE selber hosten - legal? Allgemeine Java-Themen 3
I Listener/Event selber machen. Allgemeine Java-Themen 4
N 2 Interfaces mit Methoden selber Signatur implementieren Allgemeine Java-Themen 5
B Java selber lernen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben