Ergebnis 1 bis 3 von 3

Thema: Palindrom

  1. #1
    Anfänger
    Registriert seit
    02.11.2008
    Beiträge
    5

    Standard Palindrom

    Hi. Wäre cool wenn sich jemand etwas Zeit nimmt und mir weiterhilft. Ich bekomme das nicht auf die Reihe. Die Aufgabe ist: Es soll eine Zeichenkette(max. 70 Zeichen) eingelesen
    werden. Und das "Programm" soll mir sagen ob es ein Palindrom ist oder nicht. (Ein Palindrom ist eine Zeichenkette die rückwärts gelesen das gleiche ergibt wie vorwärts gelesen.)
    Hier mein Lösungsversuch.

    class PalindromTest
    {
    public static void main(String [] args)
    {
    int i;
    int n;
    String zeichenKette_ref;
    char[] zeichenFeld_ref;
    StdEingabe instream_ref;

    instream_ref = new StdEingabe();
    //Also ich sag mal was ich hier machen will.
    zeichenKette_ref = instream_ref.liesStringMaxN (70, "Zeichenkette eingeben:"); //Zeichenkette einlesen.
    zeichenFeld_ref = zeichenKette_ref.toCharArray(); //toCharArray() soll jetzt ein Array erzeugen und die eingegebenen Zeichen in den Feldern ablegen.
    zeichenFeld_ref= new char[zeichenKette_ref.length]; //zeichenKette_ref.length ist doch praktisch die Anzahl der eingegebenen Zeichen
    i=zeichenKette_ref.length-1; //also erzeuge ich ein Array das genau so lang ist wie das Array von toCharArray(). i ist der Index für das letzte Feld

    for(n=0;n<zeichenKette_ref.length;n++)
    {
    if(zeichenFeld_ref[n]!=zeichenFeld_ref[i]) //vergleicht das 1.Feld mit dem letzten Feld im zweiten Durchlauf das 2.Feld mit dem vorletzten Feld usw. ...
    {
    System.out.print ("Kein Palindrom.");
    n=zeichenKette_ref.length; //damit die Schleife nicht mehr betreten wird
    }
    i--;
    }

    if(n<zeichenKette_ref.length)
    System.out.print ("Palindrom");

    }//endmethod main
    }//endclass PalindromTest

    Das funktioniert aber irgendwie net. Hat jemand einen Tip für mich?

  2. #2
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Weil ich deine Klasse "StdEingabe" nicht besitze fiel es mir schwer an deinem Beispiel anzuknüpfen, also habe ich einfach eine String-Instanz mit einem Beispielwert befüllt.
    Du kannst dir die Klasse ja dann soweit anpassen ^^

    Code:
    class Palindrome
    {
    	public static void main(String [] args)
    	{
    		String word = new String();
    		
    		// TODO: den String "word" von der Tastatur einlesen
    		word = "otto";
    		
    		if (check(word))
    		{
    			System.out.println("Das Wort \"" + word + "\" ist ein Palindrom!");
    		}
    		else
    		{
    			System.out.println("Das Wort \"" + word + "\" ist kein Palindrom!");
    		}
    	}
    	
    	public static boolean check(String str)
    	{
    		int len = str.length() - 1;
    		
    		for(int i = 0; i <= len; i++)
    		{
    			if (str.toLowerCase().charAt(i) != str.toLowerCase().charAt(len - i))
    			{
    				return false;
    			}
    		}
    		return true;
    	}
    }
    Getestet habe ich das ganze mit folgenden Palindromen:
    Code:
    Hannah
    Lagerregal
    Otto
    Reittier
    Reliefpfeiler
    Rentner
    Rotor
    (Qulle: Wikipedia (http://de.wikipedia.org/wiki/Palindrom), 17.12.2008)

    und noch mit ein paar nicht-Palindromen

    PS: da sich unsere beiden Ansätze nur in deiner Umwandlung von String zu char-Array unterscheiten würde ich sagen, dass der Fehler dort zu finden ist.


    mfG. BlackBerry

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  3. #3
    NoClose Wurm
    Registriert seit
    10.08.2008
    Beiträge
    173

    Standard

    Du solltest vorher noch alle Leer- und Satzzeichen entfernen, damit auch Sätze erkannt werden. ;-)
    Somit funkionierten auch:
    "Ein Neger mit Gazelle zagt im Regen nie."
    "Eine Horde bedrohe nie!"

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •