import utilities.TastaturEingabe;

/**
Ein gegebener bzw. eingelesener Text wird zu einem
Palindrom erweitert.
Der urspruengliche und der gespiegelte Text werden durch ein
Spezialzeichen ('|') getrennt.

Beispiel:  Text:  SunJava
      Palindrom: |SunJava|avaJnuS|

Das Programm liefert etwa folgenden Dialog:

|ein neger mit gazel|lezag tim regen nie|
Geben Sie einen Text ein: SunJava
|SunJava|avaJnuS|

*/
/*------------------------------------------------------------------*/

public class Palindrom
{
   String text;
   String palindrom;

   public Palindrom()
   {  text = "ein neger mit gazel";  }

   public Palindrom(String txt)
   {  text = txt;  }

   void zeigePalindrom()
   {  System.out.println(palindrom);  }

   void bildePalindrom()
   {
      StringBuffer spiegel = new StringBuffer(text);
      spiegel = spiegel.reverse();
      StringBuffer pal = new StringBuffer();
      pal.ensureCapacity(2*text.length()+3);
      // Kapazitaet von pal festlegen
      // +3 wegen Trennzeichen
      // Alternativ koennte man Konstruktor verwenden:
      // ...pal = new StringBuffer(2*text.length()+3);
      pal.append(text);
      pal.append(spiegel);
      // Texte anhaengen
      pal.insert(text.length(), '|');
      pal.insert(0, '|');
      pal.append('|');
      // Buchstaben einfuegen an angeg. Stelle
      palindrom = pal.toString();
      // Wandlung nach String
   }

   public static void main(String[] argv)
   {
      Palindrom p = new Palindrom();
      p.bildePalindrom();
      p.zeigePalindrom();

      String text = TastaturEingabe.readString("Geben Sie einen Text ein: ");
      Palindrom p2 = new Palindrom(text);
      p2.bildePalindrom();
      p2.zeigePalindrom();
   }
}
