修复 Java 中的错误操作数类型错误
本文介绍了 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
相关文章
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 虚拟机)在物理上并不存在,它提供了运行字节码的环境。
修复 Java cannot be resolved to a variable 错误
发布时间:2023/11/13 浏览次数:64 分类:Java
-
修复 Java cannot be resolved to a variable 错误本指南将教你如何修复 Java 中的 cannot be resolved to a variable 错误。