1   import java.util.Scanner;
2   /** 
3    * 183.592 Programmierpraxis TU Wien WS2014/15 H.Moritsch
4    * Formatierung eines Textes durch Begrenzung der Zeilenlänge
5    * mit Ausgaben (mittels System.out.println) die die Ausführung
6    * genau zeigen. Betrachten Sie die unterschiedliche Verarbeitung 
7    * der Eingaben:
8    *
9   hallo wie
10  geht es heute
11   *
12  hallo wie geht
13  es heute
14   *
15  hallo wie geht
16  es heute so?
17   *
18   */
19  public class FormatierungFixedV2 {
20      public static void main(String[] args) {
21          Scanner scanner = new Scanner(System.in);
22  
23          int zeilenlaenge;       // vorgegebene Zeilenlänge
24  
25          String wort;
26  
27          String zeile;           // Zeile des neuformatierten Textes
28          int position;           // Position des Zeilenendes 
29          int zaehler;            // zählt die erzeugten Zeilen 
30  
31          zeilenlaenge = 10;
32  
33          zaehler = 0;
34  
35          System.out.println("Bitte geben Sie einen Text ein");
36  
37          zeile    = "";
38          position = 0;
39  
40          // wortweise Eingabe 
41  
42          int i = 0; // zählt Schleifendurchläufe
43  
44          while (scanner.hasNext()) {
45              System.out.println( "> while-Schleife (" + (++i) + ")");
46  
47              wort = scanner.next();
48  
49              // eine Zeile wird aus den eingelesenen Worten aufgebaut 
50  
51              zeile = zeile + " " + wort;
52              
53              // was hat sich in der neuen Zeile bereits angesammelt? 
54              System.out.println( "(\"" + zeile + "\")");
55  
56              // Position des Zeilenendes wird aktualisiert
57  
58              position = position + 1 + wort.length();
59  
60              if (position >= zeilenlaenge) {
61  
62                  // wenn vorgegebene Zeilenlänge erreicht:
63                  
64                  zaehler = zaehler + 1;          
65  
66                  ausgabeZeile(zaehler, zeile);       // Ausgabe der Zeile
67  
68                  zeile    = "";                      // neue Zeile, noch leer
69                  position = 0;
70              }
71          }
72  
73          System.out.println( "> while-Schleife beendet" );
74  
75          
76          // eventuell noch nicht ausgegebene letzte Zeile
77          
78          if (zeile.length() > 0 ) {
79              zaehler = zaehler + 1;
80              ausgabeZeile(zaehler, zeile);
81          }
82  
83      }        
84  
85      /**
86      * Ausgabe einer Zeile
87      */ 
88      private static void ausgabeZeile(int nummer, String zeile) {
89          System.out.println("*** Zeile " + nummer + ":" + zeile + " ***");
90      }
91  
92  }
93