MikeX Geschrieben 23. März 2009 Geschrieben 23. März 2009 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 Zitieren
Dragon8 Geschrieben 23. März 2009 Geschrieben 23. März 2009 (bearbeitet) 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 23. März 2009 von Dragon8 Zitieren
MikeX Geschrieben 24. März 2009 Autor Geschrieben 24. März 2009 ja ok habte alles in string umgewandelt... jetzt bin ich beim herauskopieren, aber wie lautet denn die richtige Syntax von der Methode .getChar ???? Zitieren
Dragon8 Geschrieben 24. März 2009 Geschrieben 24. März 2009 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. Zitieren
MikeX Geschrieben 24. März 2009 Autor Geschrieben 24. März 2009 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 Zitieren
Dragon8 Geschrieben 24. März 2009 Geschrieben 24. März 2009 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. Zitieren
MikeX Geschrieben 24. März 2009 Autor Geschrieben 24. März 2009 ja ich weiss schon wie du meinst aber ... mh.... ok.... kannst mal deine icq nummer geben =? würde gerne paar dinge mit dir austauschen ! wäre das möglich ==? Zitieren
MikeX Geschrieben 24. März 2009 Autor Geschrieben 24. März 2009 wie bekomme ich ein Buchstabe aus einem String an einer bestimmten Stelle heruaskopiert und mit einem anderen herauskopierten Buchstaben vergleichen =? in c++ = strcpy(x;y); aber wie ist das in Java direkt Zitieren
MikeX Geschrieben 25. März 2009 Autor Geschrieben 25. März 2009 Danke schön Dragon . . .:-) :upps Zitieren
ksg9-sebastian Geschrieben 27. März 2009 Geschrieben 27. März 2009 Wie wäre es mit 1) erlernen der Grundlagen (die scheinen komplett zu fehlen) 2) "studieren" der Javadoc 3) verwenden einer IDE mit Codecompletion 4) Fleiß, Eiffer und der Fähigkeit google zu bedienen ? Zitieren
Empfohlene Beiträge
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.