Ich versuche zu überprüfen, ob mein String einen Konsonanten enthält. Der folgende Fehler lautet: "Operator || kann nicht auf 'boolean', 'char' angewendet werden" Hier ist mein Code:

       for(int i=0;i<8;i++){
       if(bezeichnung.charAt(i) == 'b'||'c'||'d'||'f'||'g'||'h'||'j'||'k'||'l'||'m'||'n'||'p'||'q'||'r'||'s'||'t'||'v'||'w'||'x'||'y'||'z'){
        //do something
       }
    }
-2
DiesDasAlex 18 Apr. 2018 im 17:21

4 Antworten

Beste Antwort

Wenn Sie || verwenden möchten, müssen Sie die Bedingungen vollständig ausschreiben:

if (bezeichnung.charAt(i) == 'b' || bezeichnung.charAt(i) == 'c'
    || bezeichnung.charAt(i) == 'd' ...

Oder Sie könnten einen Weg finden, es präziser auszudrücken:

if ("bcdfghjklmnpqrstvwxyz".indexOf(bezeichnung.charAt(i))>=0) {
   ...
}
6
khelwood 18 Apr. 2018 im 14:28

Wenn Sie den Code im gleichen Stil wie Sie halten, müssten Sie dies tun

   for(int i=0;i<8;i++){
   if(bezeichnung.charAt(i) == 'b'|| bezeichnung.charAt(i) == 'c'||bezeichnung.charAt(i) =='d) // continue this for all your cases 
    //do something
   }
}

Wenn Sie eine lange bedingte Aussage wie diese haben müssen, würde ich andere Wege untersuchen, um die Aufgabe zu erfüllen, die Sie erreichen möchten

0
chevybow 18 Apr. 2018 im 14:24

Sie können stattdessen reguläre Ausdrücke verwenden.

for(int i=0;i<8;i++){
    String regex = ".*[a-zA-Z].*";
    if(bezeichnung.charAt(i).matches(regex)){
        //do something
    }
}
0
kishea 18 Apr. 2018 im 14:39

Sie können den OR-Operator nicht so verwenden.

Für jedes Zeichen müssen Sie die Bedingung separat überprüfen.

for(int i=0;i<8;i++)
{
       if(bezeichnung.charAt(i) == 'b' || bezeichnung.charAt(i) ==  'c' || bezeichnung.charAt(i) ==  'd' || bezeichnung.charAt(i) == 'f')
       {
          //do something
       }
 }
0
Minoli Alles 19 Apr. 2018 im 02:49