Behebung des Fehlers Bad Operand Types in Java

Mohammad Irfan 12 Oktober 2023
  1. Fehlerhafte Operandentypen für den &-Operator in Java
  2. Fehlerhafte Operandentypen für den &&-Operator in Java
  3. Fehlerhafte Operandentypen für den Operator == in Java
  4. Fehlerhafte Operandentypen für den Operator <= in Java
Behebung des Fehlers Bad Operand Types in Java

Dieses Tutorial stellt den Fehler bad operand types für binäre Operatoren in Java vor.

Ein binärer Operator ist ein Operator, der zwei Operanden erfordert. Operatoren wie arithmetische Operatoren und Vergleichsoperatoren werden binäre Operatoren genannt.

Operatoren spielen eine wichtige Rolle bei der Programmierung, und manchmal kann ein binärer Operator aufgrund unsachgemäßer Verwendung den Fehler bad operand types ausgeben. Der Fehler bad operand types ist ein Kompilierungsfehler, wenn beide Arten von Operanden inkompatibel sind.

Zum Beispiel erhalten wir diesen Fehler, wenn wir eine Zeichenfolge mit einer Ganzzahl vergleichen. Dieser Artikel befasst sich mit verschiedenen Beispielen, wie dieser Fehler auftritt und wie er behoben werden kann.

Manchmal kann die Rangfolge der Operatoren auch zu inkompatiblen Operatortypen führen und zu einem Fehler an der Konsole führen.

Fehlerhafte Operandentypen für den &-Operator in Java

Lassen Sie uns zunächst den häufigsten Fall verstehen, in dem ein bad operator error im Java-Code auftreten kann. Sehen Sie sich unten einen Beispielcode an:

public class MyClass {
  public static void main(String args[]) {
    int x = 43;
    if (x & 21 == 1) {
      System.out.println("if block executing");
    } else {
      System.out.println("else block executing");
    }
  }
}

Ausgabe:

MyClass.java:4: error: bad operand types for binary operator '&'
      if( x & 21 == 1){
            ^
  first type:  int
  second type: boolean
1 error

Dieser Fehler tritt auf, weil die Priorität des Operators == (gleich) höher ist als die des Operators &. Dies führt zur Auswertung 21 == 1, was uns einen booleschen Wert liefert.

Beachten Sie nun, dass das & einen ganzzahligen Operanden und einen booleschen Wert hat. Da beide Operatoren unterschiedlichen Typs sind, kann der Operator & nicht funktionieren, sodass wir eine Fehlermeldung erhalten.

Wir werden Klammern verwenden, um anzuzeigen, dass x & 21 zuerst ausgewertet werden muss, um diesen Fehler zu beheben. Sehen Sie sich den modifizierten Code unten an:

public class MyClass {
  public static void main(String args[]) {
    int x = 43;
    if ((x & 21) == 1) {
      System.out.println("if block executing");
    } else {
      System.out.println("else block executing");
    }
  }
}

Ausgabe:

if block executing

Fehlerhafte Operandentypen für den &&-Operator in Java

Wenn Sie mit dem logischen Operator && (und) arbeiten, können Sie in einigen Fällen mit dem Fehler bad operand types konfrontiert werden, wie im folgenden Beispielcode:

public class MyClass {
  public static void main(String args[]) {
    int x = 43;
    if ((x > 10) && (x * 5)) {
      System.out.println("if block executing");
    } else {
      System.out.println("else block executing");
    }
  }
}

Ausgabe:

MyClass.java:4: error: bad operand types for binary operator '&&'
      if((x > 10) && (x*5)){
                  ^
  first type:  boolean
  second type: int
1 error

Dieser Fehler tritt auf, weil der Operand && zwei boolesche Operanden erwartet.

Hier ergibt der Ausdruck x * 5 einen ganzzahligen Wert. Daher hat der Operator && hier einen ganzzahligen Operanden und gibt uns den Fehler bad operand types.

Um diesen Fehler zu beheben, ändern wir diesen Code so, dass x * 5==21 einen booleschen Wert zurückgibt. Sehen Sie sich den modifizierten Code unten an:

public class MyClass {
  public static void main(String args[]) {
    int x = 43;
    if ((x > 10) && (x * 5 == 21)) {
      System.out.println("if block executing");
    } else {
      System.out.println("else block executing");
    }
  }
}

Ausgabe:

else block executing

Fehlerhafte Operandentypen für den Operator == in Java

Sie erhalten möglicherweise denselben Fehler, wenn Sie mit dem Gleichheitsoperator == arbeiten. Es kann zu einem schlechten Operatorfehler kommen, wenn beide übergebenen Operanden von unterschiedlichem Typ sind.

Sehen Sie sich das folgende Beispiel an:

public class MyClass {
  public static void main(String args[]) {
    int x = 43;
    String y = "43";
    if (x == y) {
      System.out.println("if block executing");
    } else {
      System.out.println("else block executing");
    }
  }
}

Ausgabe:

MyClass.java:5: error: bad operand types for binary operator '=='
      if(x == y){
           ^
  first type:  int
  second type: String
1 error

Dieser Fehler tritt auf, weil die Operanden des Gleichheitsoperators == unterschiedlichen Typs sind. Das eine ist ein String und das andere eine ganze Zahl.

Um diesen Fehler zu beheben, müssen wir einen von ihnen konvertieren, um dieselben Datentypen zu erhalten. Wenn wir Integer in Strings umwandeln, erfolgt der Vergleich in lexikologischer Reihenfolge.

Also konvertieren wir string in int. Sehen Sie sich den modifizierten Code unten an:

public class MyClass {
  public static void main(String args[]) {
    int x = 43;
    String y = "43";
    if (x == Integer.parseInt(y)) {
      System.out.println("if block executing");
    } else {
      System.out.println("else block executing");
    }
  }
}

Ausgabe:

if block executing

Fehlerhafte Operandentypen für den Operator <= in Java

Wie im vorherigen Fallbeispiel kann auch der Operator <= (kleiner als gleich) einen Fehler Bad Operand Types liefern, wenn beide Operanden von unterschiedlichen Typen sind. Sehen Sie sich das folgende Beispiel an:

public class MyClass {
  public static void main(String args[]) {
    int x = 43;
    String y = "43";
    if (x <= y) {
      System.out.println("if block executing");
    } else {
      System.out.println("else block executing");
    }
  }
}

Ausgabe:

MyClass.java:5: error: bad operand types for binary operator '<='
      if(x <= y){
           ^
  first type:  int
  second type: String
1 error

Um diesen Fehler zu beheben, müssen wir einen von ihnen konvertieren, um dieselben Datentypen zu erhalten. Sehen Sie sich den modifizierten Code unten an:

public class MyClass {
  public static void main(String args[]) {
    int x = 43;
    String y = "43";
    if (x <= Integer.parseInt(y)) {
      System.out.println("if block executing");
    } else {
      System.out.println("else block executing");
    }
  }
}

Ausgabe:

if block executing

Verwandter Artikel - Java Error