Zum Inhalt springen

IstPalindro ja/nein Java?


MikeX

Empfohlene Beiträge

Hallo, ich möchte ein Programm schreiben, um zu prüfen ob das eingegebene Wort ein PAlindrom oder nicht ist.

Habe das Programm fertig in C++ aber da ich jetzt seit kurzem in JAva umgestiegen bin, wolte ich jetzt meine ganz alten Programme nochmal in Java verwirklichen.

Wer kann mir helfen.?

Irgendwas ist mit dem Einlesen falsch... Er liest ein String ein. kann man das in ein String[] umwandeln =?

String pal[], b1[],b2[];

try

{

BufferedReader MyIn = new BufferedReader(new InputStreamReader(System.in));

System.out.println("Überprüfung auf Palindrom !");

System.out.print("Eingabe des Palindroms:");

pal = MyIn.readLine();

int l = pal.length();

int m = l % 2;

int hl = (l/2);

System.out.println("Modulo: " + m + " Hälfte: " + hl );

for(int i = 0;i<=m;i++)

{

b1[1]=pal;

b2[1]=pal[l-1];

if(b1[1] = b2[1]){

l=l-1;}

if(b1[1]!=b2[1]){System.out.println("\n\n\n Es ist kein Palindrom!\n")

}

System.out.println("Das Wort " + pal + " ist ein Palindrom !!");

}

catch (IOException e){

System.out.println("IO-Fehler");

jetzt dir Fehler ! (kommen wohl alle durch das [] Array)

Exception in thread "main" java.lang.Error: Unresolved compilation problems:

Type mismatch: cannot convert from String to String[]

Cannot invoke length() on the array type String[]

Type mismatch: cannot convert from String to boolean

Syntax error, insert "}" to complete ClassBody

wäre nett, wenn mir jmd helfen könnte

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Fehler liegt in der Zeile 'pal = MyIn.readLine();'.

Die Variable pal ist bei dir ein String-Array, die Methode readLine() hat aber einen Rückgabewert vom Typ String. Deswegen kommt bei dir die Fehlermeldung.

Wenn du jetzt jedoch deine Variable pal zu einem Typ String machst, wirste spätestens in deiner for-Schleife auf die nächsten Probleme stoßen. Da du dort ja auf die Variable pal wie auf ein Array zugreifst.

Ich verstehe aber ehrlich gesagt auch noch nicht, warum du überhaupt String-Arrays brauchst. Weil du benutzt in deiner for-Schleife die Arrays b1 und b2 auch nur so, als wenn es Variable wären, in dem du einfach nur auf die 2. Stelle im Array zugreifst.

Ich denke, es wäre einfacher, wenn du entweder das eingegebene Wort als einfachen String (kein Array!) einliest und das dann in ein char-Array umwandelst (siehe String#toCharArray()), die beiden Variablen b1 und b2 in Variablen vom Typ char umwandelst, und dann deinen Vergleich mit den Typen durchführst.

Oder du wandelst alle 3 Variablen in den Typ String um und benutzt bei deinem String pal, die vorhandenen String-Funktionen um dir einzelne Buchstaben rauszuschneiden. Dann solltest du jedoch beachten, dass man Variablen vom Typ String nicht mit '==' sondern mit der Methode equal() verleichen sollte. Da '==' die Referenzen vergleich und equal() den Inhalt.

Bearbeitet von Dragon8
Link zu diesem Kommentar
Auf anderen Seiten teilen

Inwieweit Syntax?

Wenn du jetzt die Methode, toCharArray(), meinst, die ich dir verlinkt habe, legst du dir einfach ein Array vom Typ char an und weist diesem den Rückgabewert der Funktion zu.

Dann hast du ein Array in dem an jeder Position der passende Buchstabe aus deinem String steht und kannst dann ganz einfach per Schleife drüber laufen und die Buchstaben vergleichen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

na egal habs jetzt anders gemacht.

Welce Datentypen kann x.equals(y); alles vergleichen ?

BufferedReader MyIn = new BufferedReader(new InputStreamReader(System.in));

System.out.println("Überprüfung auf Palindrom !");

System.out.print("Eingabe des Palindroms:");

pal = MyIn.readLine();

int l = pal.length();

int m = l % 2;

int hl = (l / 2);

System.out.println("Modulo: " + m + " Hälfte: " + hl );

char[] c = pal.toCharArray();

System.out.println("_________________________________________________________");

for(int i = 0;i<=hl;i++){

l=l-1;

if( c.equals(c[l]) ){

System.out.println(c);

}

}

System.out.println("Das Wort " + pal + " ist ein Palindrom !!");*/

Cannot invoke equals(char) on the primitive type char

Syntax error on tokens, delete these tokens

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die Methode equal() kann alle Objekte vergleichen. Bei dir ist jetzt nur das Problem, das char ein primitiver Datentyp ist, und kein Objekt, deswegen gibt es dort die Methode equal() auch nicht. Primitive Datentypen kannst du ganz einfach mit '==' vergleichen.

Deswegen meinte ich ja, hättest du alles zu nem String gemacht, wäre die Methode equal() die richtige Variante gewesen, da Strings nunmal Objekte sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...