Java String mit Character(char) vergleichen

Zerstoerer

Lieutenant
Dabei seit
Okt. 2010
Beiträge
648
Guten Abend zusammen,

habe hier grade ein kurzes Problem. Ich möchte hier also einen String mit einem Character vergleichen:

if(g.charAt(i)==" " || g.charAt(i)=="#") {

Allerdings werden hier mehrere Fehler angezeigt, weiß einer warum?

Wäre dankbar für ein paar Antworten.
 

Zerstoerer

Lieutenant
Ersteller dieses Themas
Dabei seit
Okt. 2010
Beiträge
648
Also hier wäre der Fehler:

Morsebaum.java:29:23: incomparable types: char and java.lang.String
if(g.charAt(i)==" " || g.charAt(i)=="#") {
^
 

Alchemist

Lieutenant
Dabei seit
Juni 2009
Beiträge
752
hallo

ein char wird mit einfachen Hochkommas bezeichnet
' ' sowas nicht " " so
 

hell-student

Lieutenant
Dabei seit
Nov. 2007
Beiträge
671
Hallo,

Habe schon lange nicht mehr mit Java gearbeitet aber versuch mal folgendes:

statt:

if(g.charAt(i)==" " || g.charAt(i)=="#")

lieber:

if(g.charAt(i)==' ' || g.charAt(i)=='#')

Ein Char ist kein String

charAt() gibt ein Character zurück != String
 

Zerstoerer

Lieutenant
Ersteller dieses Themas
Dabei seit
Okt. 2010
Beiträge
648
Ich dachte man kann mit der Methode charAt den Wert eines Strings an einer bestimmten Stelle herausleden?
 

Rossie

Commodore
Dabei seit
Dez. 2010
Beiträge
4.102
Und was ist Dir nicht klar? Die Fehlermeldung besagt doch ganz klar, dass Du die beiden Typen nicht miteinander vergleichen kannst. Also nimmt man hier immer char:

Code:
if(g.charAt(i)==' ' || g.charAt(i)=='#') {
Dass man Strings nicht mit dem == Operator, sondern mittels equals vergleichen sollte, weißt Du?
 

Alchemist

Lieutenant
Dabei seit
Juni 2009
Beiträge
752
Kannst du auch.
Der Fehler liegt bei deinem Vergleich. Du nimmst mit den "" wieder einen String ;)
 

Rossie

Commodore
Dabei seit
Dez. 2010
Beiträge
4.102
charAt() liefert einen Wert des primitiven Typen char. Diesen kannst Du nicht mittels == Operator mit einem Objekt des Typs String vergleichen, weil == auf Objekt-Identität prüft, aber ein String kann niemals ein char sein.
 

Zerstoerer

Lieutenant
Ersteller dieses Themas
Dabei seit
Okt. 2010
Beiträge
648
OK danken für eure Hilfe.
Kurze Frage hinterher: Kann ich die Länge eines String Arrays mit array.length oder array.lengt() herausfinden?
 

dcobra

Lt. Junior Grade
Dabei seit
Aug. 2011
Beiträge
286
Warum denn nicht? Klar geht das.
Verstehe auch nicht warum du es nicht einfach getestet hast.
 

Zerstoerer

Lieutenant
Ersteller dieses Themas
Dabei seit
Okt. 2010
Beiträge
648
OK, nun (leider) noch eine Frage:

Warum kann ich dies nicht tun:

String e = ""+hilf.getObject();
c = (char) e;
return c;
 

Alchemist

Lieutenant
Dabei seit
Juni 2009
Beiträge
752
was sagt der Compiler dazu?
erstmal ist es ohnehin sinnlos einen String in einen Character zu wandeln. Der besteht schließlich nur aus einem Zeichen.
Es gibt glaub ich sowas wie toCharArray() Damit kannst du dann einen String in ein Charfeld tun.
 

Rossie

Commodore
Dabei seit
Dez. 2010
Beiträge
4.102
Weil man nicht zwischen Objekt-Typen und primitiven Typen casten kann.

Du solltest Dich noch etwas mit den Grundlagen befassen...
 

Zerstoerer

Lieutenant
Ersteller dieses Themas
Dabei seit
Okt. 2010
Beiträge
648
Ích habe eine private char ausgabe() methode. Deshalb kann ich keinen String ausgeben, sondern nur ein Character. In der zweiten Zeile : c = (char e) versuche ich den String in ein Character umzuwandeln. Dies funktioniert leider nicht.
Info: Der String selbst besteht nur aus einem einzigen Buchstaben. Diesen will ich als char zurückgeben. Nur wie?
 

Rossie

Commodore
Dabei seit
Dez. 2010
Beiträge
4.102
Besteht der String denn nur aus genau einem char?

Ausgeben lässt sich ein String mittels Hilfsmethode:

Code:
void print(String rString) {
   for (int i = 0, size = rString.length(); i < size; i++) 
       ausgabe(rString.charAt(i));
}
 

dcobra

Lt. Junior Grade
Dabei seit
Aug. 2011
Beiträge
286
Schau mal in deinen Startpost, als hättest du String.charAt() dort nicht schon selbst benutzt... :freak:
 

Alchemist

Lieutenant
Dabei seit
Juni 2009
Beiträge
752
dann kannst du doch auch wieder mit deiner charAt() Methode arbeiten.
An Position 0 ist dann ja dein Zeichen im String
 

Zerstoerer

Lieutenant
Ersteller dieses Themas
Dabei seit
Okt. 2010
Beiträge
648
Der String besteht doch nur aus einem Zeichen, dass in einen char umgewandelt werden soll.

Edit: Ok das werde ich mal versuchen

@ Alchemist: Wie sollte ich das denn mit charAt() machen?
 
Zuletzt bearbeitet:
Top