迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

修复 Java 中的错误操作数类型错误

作者:迹忆客 最近更新:2023/11/13 浏览次数:

本文介绍了 Java 中二元运算符的 bad operand types 错误。

二元运算符是需要两个操作数的运算符。算术运算符和关系运算符等运算符称为二元运算符。

运算符在编程中起着至关重要的作用,有时,由于使用不当,二元运算符会给出错误的操作数类型错误。当两种类型的操作数不兼容时,bad operand types 错误是编译时错误。

例如,我们将字符串与整数进行比较时会出现此错误。本文将介绍此错误如何发生以及如何解决的不同示例。

有时,运算符的优先顺序也可能导致运算符类型不兼容并导致控制台出错。


Java 中&运算符的错误操作数类型

让我们首先了解 Java 代码中可能出现 bad operator error 的最常见情况。看下面的示例代码:

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");
    }
  }
}

输出:

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

发生此错误是因为 ==(等于)运算符的优先级高于& 运算符的优先级。这导致了 21 == 1 评估,它给了我们一个布尔值。

现在,请注意 & 有一个整数操作数和一个布尔值。由于两个运算符的类型不同,&运算符不能工作,所以我们得到一个错误。

我们将使用括号表示需要首先评估 x & 21 以解决此错误。看下面修改后的代码:

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");
    }
  }
}

输出:

if block executing

Java 中&&运算符的错误操作数类型

同样,如果你正在使用逻辑&&(和)运算符,那么在某些情况下你可能会遇到 bad operand types 错误,例如以下示例代码:

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");
    }
  }
}

输出:

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

发生此错误是因为 && 操作数需要两个布尔操作数。

这里,表达式 x * 5 给出一个整数值。因此,这里的&& 运算符有一个整数操作数,并给我们带来 bad operand types 错误。

为了解决这个错误,我们将修改这个代码,使得 x * 5==21 返回一个布尔值。看下面修改后的代码:

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");
    }
  }
}

输出:

else block executing

Java 中 == 运算符的错误操作数类型

使用 == 等于运算符时,你可能会遇到相同的错误。如果传递的两个操作数都是不同的类型,它会给出一个错误的操作符错误。

看下面的例子:

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");
    }
  }
}

输出:

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

发生此错误是因为 == 等于运算符的操作数属于不同类型。一个是字符串,另一个是整数。

要解决此错误,我们必须转换其中一个以获得相同的数据类型。如果我们将整数转换为字符串,则比较将按词汇顺序进行。

因此,我们将字符串转换为 int。看下面修改后的代码:

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");
    }
  }
}

输出:

if block executing

Java 中 <= 运算符的错误操作数类型

与前面的案例示例一样,当两个操作数的类型不同时,<=(小于等于)运算符也可能给出 bad operator types 错误。看下面的例子:

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");
    }
  }
}

输出:

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

要解决此错误,我们必须转换其中一个以获得相同的数据类型。看下面修改后的代码:

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");
    }
  }
}

输出:

if block executing

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Java 中的 volatile 关键字

发布时间:2023/11/13 浏览次数:173 分类:Java

本文讨论了 Java 中的 volatile 关键字及其优缺点,并举例说明了如何使用。Java 是一种非常流行的编程语言,通过了解 Java,我们可以很容易地理解它为什么会在编程社区中获得这样的地位。

Java 中的 StringUtils

发布时间:2023/11/13 浏览次数:80 分类:Java

本文介绍 Java 中的 StringUtils 类是什么。本文介绍什么是 StringUtils 以及如何在 Java 中使用它来处理字符串。StringUtils 是一个用于处理 String 的类,它提供了比 Java String 类更多的实用方法。

Java 中的 flatMap

发布时间:2023/11/13 浏览次数:132 分类:Java

本文介绍 flatMap 以及如何在 Java 中使用它。本文介绍 flatMap 以及如何在 Java 中使用它。flatMap 是 Java 流中的一个操作/函数,用于在执行某些功能性任务后获取新流。在这里,我们将讨论 flatMap

在 Java 中将 Stream 元素转换为映射

发布时间:2023/11/13 浏览次数:77 分类:Java

我们将使用 Java 将流元素转换为映射。我们将向你展示如何使用 Collectors.toMap() 从 Java 字符串中提取映射。我们将讨论 Java Streams 的实际用途以及如何将流元素转换为映射元素。

Java 中的 findFirst 流方法

发布时间:2023/11/13 浏览次数:171 分类:Java

本教程介绍 Java 中的 findFirst 流方法。java.util.stream API 是在 Java 8 中引入的;它用于处理对象的集合。不同的源(例如数组或集合)可以创建流。

Java 中的 Stream 的 reduce 操作

发布时间:2023/11/13 浏览次数:147 分类:Java

本文介绍 Java 中 stream 的 reduce 操作。本文将讨论 reduce() 操作细节并讨论它的一些示例。在讨论 reduce() 操作之前。让我们首先讨论减少。

Java 中的 reflection 是什么

发布时间:2023/11/13 浏览次数:79 分类:Java

本文介绍了 reflection 以及如何在 Java 中使用它。本文介绍 reflection 以及如何在 Java 中使用它。Java 有一个 reflection API 特性,它允许我们检查和修改类、接口等。

修复 Java 未解决的编译错误

发布时间:2023/11/13 浏览次数:141 分类:Java

本文介绍如何修复 Java 中未解决的编译错误。Java 在三个组件上工作:JVM、JRE 和 JDK。JVM(Java 虚拟机)在物理上并不存在,它提供了运行字节码的环境。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便