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    */
6   public class Formatierung {
7       public static void main(String[] args) {
8           Scanner scanner = new Scanner(System.in);
9   
10          int zeilenlaenge=0;     // vorgegebene Zeilenlänge
11  
12          String wort;
13  
14          String zeile;           // Zeile des neuformatierten Textes
15          int position;           // Position des Zeilenendes 
16          int zaehler;            // zählt die erzeugten Zeilen 
17  
18          boolean ganzeZahl;
19          String zeilenrest;
20          
21          System.out.println("Bitte geben Sie die Zeilenlänge ein");
22    
23          ganzeZahl = false;      
24  
25          // wenn es eine ganze Zahl in der Eingabe gibt
26          if (scanner.hasNextInt()) {
27          
28              // nächste ganze Zahl
29              zeilenlaenge = scanner.nextInt();       
30              
31              System.out.println("Zeilenlänge: " + zeilenlaenge);
32              ganzeZahl = true;
33              
34              // eventueller Rest bis zum Zeilenende
35              zeilenrest = scanner.nextLine();
36              if (zeilenrest.length() > 0)
37                  System.out.println("[" + zeilenrest + "]" + " war doch nicht nötig ;-)");
38          }
39          
40          else {
41              System.out.println(scanner.next() + " ist leider keine ganze Zahl :-!");
42              ganzeZahl = false;
43          }
44      
45          // weitere Verarbeitung mit eingegeber Zeilenlänge
46          
47          if (ganzeZahl) {
48          
49              zaehler = 0;
50          
51              System.out.println("Bitte geben Sie einen Text ein");
52  
53              zeile    = "";
54              position = 0;
55  
56              // wortweise Eingabe 
57  
58              while (scanner.hasNext()) {
59  
60                  wort = scanner.next();
61  
62                  // eine Zeile wird aus den eingelesenen Worten aufgebaut 
63  
64                  zeile = zeile + " " + wort;
65  
66                  // Position des Zeilenendes wird aktualisiert
67  
68                  position = position + 1 + wort.length();
69  
70                  if (position >= zeilenlaenge) {
71  
72                      // wenn vorgegebene Zeilenlänge erreicht:
73                  
74                      zaehler = zaehler + 1;          
75  
76                      ausgabeZeile(zaehler, zeile);       // Ausgabe der Zeile
77  
78                      zeile    = "";                      // neue Zeile, noch leer
79                      position = 0;
80                  }
81              }
82              
83              // eventuell noch nicht ausgegebene letzte Zeile
84          
85              if (zeile.length() > 0 ) {
86                  zaehler = zaehler + 1;
87                  ausgabeZeile(zaehler, zeile);
88              }
89  
90          } // ganze Zahl
91  
92      }        
93  
94      /**
95      * Ausgabe einer Zeile
96      */ 
97      private static void ausgabeZeile(int nummer, String zeile) {
98          System.out.println("Zeile " + nummer + ":" + zeile);
99      }
100 
101 }
102