Einzelnen Beitrag anzeigen

Xanatos

Registriert seit: 23. Jul 2007
2 Beiträge
 
#1

Java - Zeilenumbruch

  Alt 3. Dez 2007, 18:06
Ich rede nicht gerne um den heißen Brei herum und komme deswegen sofort zu meinem Problem.

In der Schule haben wir mit Java angefangen und sollen jetzt ein Programm schreiben, welches einen vorgegebenen Text in eine bestimmte Zeilenlänge umbricht. Diese Zeilenlänge wird im Programm abgefragt und natürlich soll nicht mitten in den Wörtern umgebrochen werden, sondern nach Wörtern.

Mein Problem ist, dass sich bei mir irgendwo ein Fehler eingeschlichen hat. Ich weiß, dass ich über den Index hinaus lese, aber ich sehe nicht wo, und wann.

Der Code befindet sich auch in der angehängten Datei, aber ich schreibe ihn auch hier hin.

Ich erwarte keine Lösung und vorallem nicht eine Lösung die ich nicht kapiere.
(Ihr sollte nicht meine Hausaufagen machen)
Aber ein Tipp was falsch ist und vorallem warum wäre nicht schlecht, da ich schon mehrere Stunden über diesen Fehler nachgedacht habe.

MfG Xanatos

Code:
import java.io.*;

public class Zeilenumbruch
{
  static BufferedReader Tastatur;
  static String Text, Zeile;
  static int Laenge, Stelle, Last;
 
 
  public static void lesen()
  {
    System.out.println("Bitte geben Sie die gewünschte Länge ein!"+
    " (Länge muss größer als 15 sein)");
    try
    {
      Laenge = Integer.parseInt(Tastatur.readLine());
    }
    catch (Exception e)
    {
      System.out.println("Fehlerhafte Eingabe");
    }
  }
 
  public static void ausgabe()
  {
    while (Stelle < Text.length())
    {
      if (Stelle + Laenge < Text.length())
      {
        Zeile = Text.substring(Stelle, Stelle + Laenge + 1);
        Last = Zeile.lastIndexOf(" ");
        Zeile = Zeile.substring(0, Last + 1);
        System.out.println(Zeile.trim());
        Stelle = Stelle + Zeile.length() - 1;
      }
      else
      {
        Last = Text.length() - Stelle;
        System.out.println(Stelle);
        System.out.println(Last);
        System.out.println(Text.length());
        Zeile = Text.substring(Stelle, Last + 1);
        System.out.println(Zeile);
      }
    }
  }

  public static void main(String[] agrs) throws IOException
  {
    Text = "Wie Sie an diesem Beispiel sehen können macht es keinen guten" +
           "Eindruck, wenn man einfach seinen Text nur in eine einzige Zeile" +
           "schreibt. Man muss dann den Text scrollen und das ist lästig. " +
           "Besser wäre es, wenn der Text in passende Zeilen umbrochen wäre. " +
           "Ihre Aufgabe ist es also, diesen Text zu kopieren und einer " +
           "Stringvariable zuzuweisen. Lesen Sie von der Tastatur die" +
           "gewünschte Zeilenlänge ein und geben Sie anschließend diesen Text" +
           "entsprechend umbrochen aus.";
    Stelle = 0;
    Tastatur = new BufferedReader(new InputStreamReader(System.in));
           
    lesen();
    if (Laenge > 15)
    {
      System.out.println();
      ausgabe();
    }

  }
}
  Mit Zitat antworten Zitat