Java에서 잘못된 피연산자 유형 오류 수정
-
Java의
&
연산자에 대한 잘못된 피연산자 유형 -
Java의
&&
연산자에 대한 잘못된 피연산자 유형 -
Java의
==
연산자에 대한 잘못된 피연산자 유형 -
Java의
<=
연산자에 대한 잘못된 피연산자 유형
이 자습서에서는 Java의 이진 연산자에 대한 잘못된 피연산자 유형
오류를 소개합니다.
이항 연산자는 두 개의 피연산자가 필요한 연산자입니다. 산술 연산자 및 관계 연산자와 같은 연산자를 이진 연산자라고 합니다.
연산자는 프로그래밍에서 중요한 역할을 하며, 때때로 이진 연산자는 부적절한 사용으로 인해 bad operand types
오류를 제공할 수 있습니다. bad operand types
오류는 두 유형의 피연산자가 호환되지 않을 때 컴파일 시간 오류입니다.
예를 들어 문자열을 정수와 비교할 때 이 오류가 발생합니다. 이 문서에서는 이 오류가 발생하는 방법과 해결 방법에 대한 다양한 예를 살펴봅니다.
때로는 연산자의 우선 순위가 호환되지 않는 연산자 유형으로 이어져 콘솔에 오류가 발생할 수도 있습니다.
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의 &&
연산자에 대한 잘못된 피연산자 유형
유사하게, 논리적 &&
(and) 연산자로 작업하는 경우 아래 예제 코드와 같은 경우에 bad operator error
오류가 발생할 수 있습니다.
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 operator error
오류가 발생합니다.
이 오류를 해결하기 위해 부울 값을 반환하는 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
이 오류는 ==
등호 연산자의 피연산자의 유형이 다르기 때문에 발생합니다. 하나는 문자열이고 다른 하나는 정수입니다.
이 오류를 해결하려면 그 중 하나를 동일한 데이터 유형으로 변환해야 합니다. 정수를 문자열로 변환하면 사전순으로 비교가 발생합니다.
따라서 string을 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의 <=
연산자에 대한 잘못된 피연산자 유형
이전 사례의 예와 같이 <=
(보다 작음) 연산자는 두 피연산자의 유형이 서로 다른 경우 잘못된 연산자 유형
오류를 제공할 수도 있습니다. 아래 예를 보십시오.
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