错误消息“运算符‘&&’无法应用于 'int' 'boolean'
Error message "Operator '&&' cannot be applied to 'int' 'boolean'
public class LargestEven {
public int largestEven(int x, int y, int z) {
if(x % 2 = 0 && x > y && x > z) {
return x;
} else if (y % 2 = 0 && y > x && y > z) {
return y;
} else if (z % 2 = 0 && z > x && z > y) {
return z;
} else {
return 0;
}
}
public static void main(String[] args) {
LargestEven l = new LargestEven();
System.out.println(l.largestEven(1, 3, 5)); //prints 0
System.out.println(l.largestEven(2, 4, 9)); //prints 4
System.out.println(l.largestEven(2, 1001, 1003)); //prints 2
}
}
我必须编写一个程序,从 3 个给定数字中找出最大的偶数。但是我似乎无法让它工作,因为我不断收到此错误消息。我到底做错了什么?
对于新手问题,我深表歉意,但我以前从未见过此错误消息,也不知道它是什么意思或如何解决它。
提前致谢。
你必须使用==来比较&使用=来赋值
if (x % 2 == 0 && x > y && x > z) {
return x;
} else if (y % 2 == 0 && y > x && y > z) {
return y;
} else if (z % 2 == 0 && z > x && z > y) {
return z;
} else {
return 0;
}
在您的 if
和 else if
语句中,您有以下几行:
x % 2 = 0
试试改成这个
x % 2 == 0 // Multiple ==
单个=
用于赋值,像这样:
int i = 0;
还有两个 ==
用于比较 if
和 else if
:
if (i == 0){
...
}
if
中的语句是一个布尔值。这将完全相同,但首先将其分配给 boolean
:
boolean x = (i == 0);
if (x){ // OR if (x == true){
...
}
我希望现在区别很明显。我还建议多了解一下 Java 或一般编程的基础知识。
您在条件中使用了赋值运算符 =
而不是 ==
相等运算符。请遵循以下逻辑。我也给了优化版。
当您查看 x
时,请确保其他变量 (y,z)
不是 divisible by 2
,如果是,则它们小于 x
。然后在其他条件下复制相同的内容。
public int largestEven(int x, int y, int z) {
if(x % 2 == 0 && ((y % 2 != 0) || (y%2 == 0 && y < x)) && ((z % 2 != 0) || (z % 2 == 0 && z < x))) {
return x;
} else if (y % 2 == 0 && ((x % 2 != 0) || (x%2 == 0 && x < y)) && ((z % 2 != 0) || (z % 2 == 0 && z < y))) {
return y;
} else if (z % 2 == 0 && ((x % 2 != 0) || (x%2 == 0 && x < z)) && ((y % 2 != 0) || (y % 2 == 0 && y < z))) {
return z;
} else {
return 0;
}
}
您可以使用您在之前检查中获得的信息进一步优化条件检查。
public int largestEven(int x, int y, int z) {
if(x % 2 == 0 && ((y % 2 != 0) || (y%2 == 0 && y < x)) && ((z % 2 != 0) || (z % 2 == 0 && z < x))) {
return x;
} else if (y % 2 == 0 && ((z % 2 != 0) || (z % 2 == 0 && z < y))) {
return y;
} else if (z % 2 == 0) {
return z;
} else {
return 0;
}
}
一旦比较x
,当我们到达y
时,我们需要担心x
。因为它不能比 y 更高并且不能被 2 整除,所以我们可以从条件中删除它。 z
.
也类似
您必须针对每个条件检查个体和组中的偶数和奇数条件,然后检查最大和 return。
public int largestEven(int x, int y, int z) {
if (x % 2 == 0 && (y%2!=0 && z%2!=0)) {
return x;
}else if(y%2==0 && (x%2!=0 && z%2!=0) ){
return y;
}else if(z%2==0 && (x%2!=0 && y%2!=0) ){
return z;
}else if(x%2==0 && y%2==0 && z%2!=0){
return x>y?x:y;
}else if(x%2==0 && z%2==0 && y%2!=0){
return x>z?x:z;
}else if(y%2==0 && z%2==0 && x%2!=0){
return y>z?y:z;
}else if(x%2==0 && y%2==0 && z%2==0 ){
return x > y ? (x > z ? x : z) : (y > z ? y : z) ;
}else{
return 0;
}
}
public static void main(String[] args) {
System.out.println(largestEven(6, 3, 4)); //prints 6
System.out.println(largestEven(2, 4, 8)); //prints 8
System.out.println(largestEven(2, 1006, 1003)); //prints 1006
}
public class LargestEven {
public int largestEven(int x, int y, int z) {
if(x % 2 = 0 && x > y && x > z) {
return x;
} else if (y % 2 = 0 && y > x && y > z) {
return y;
} else if (z % 2 = 0 && z > x && z > y) {
return z;
} else {
return 0;
}
}
public static void main(String[] args) {
LargestEven l = new LargestEven();
System.out.println(l.largestEven(1, 3, 5)); //prints 0
System.out.println(l.largestEven(2, 4, 9)); //prints 4
System.out.println(l.largestEven(2, 1001, 1003)); //prints 2
}
}
我必须编写一个程序,从 3 个给定数字中找出最大的偶数。但是我似乎无法让它工作,因为我不断收到此错误消息。我到底做错了什么?
对于新手问题,我深表歉意,但我以前从未见过此错误消息,也不知道它是什么意思或如何解决它。
提前致谢。
你必须使用==来比较&使用=来赋值
if (x % 2 == 0 && x > y && x > z) {
return x;
} else if (y % 2 == 0 && y > x && y > z) {
return y;
} else if (z % 2 == 0 && z > x && z > y) {
return z;
} else {
return 0;
}
在您的 if
和 else if
语句中,您有以下几行:
x % 2 = 0
试试改成这个
x % 2 == 0 // Multiple ==
单个=
用于赋值,像这样:
int i = 0;
还有两个 ==
用于比较 if
和 else if
:
if (i == 0){
...
}
if
中的语句是一个布尔值。这将完全相同,但首先将其分配给 boolean
:
boolean x = (i == 0);
if (x){ // OR if (x == true){
...
}
我希望现在区别很明显。我还建议多了解一下 Java 或一般编程的基础知识。
您在条件中使用了赋值运算符 =
而不是 ==
相等运算符。请遵循以下逻辑。我也给了优化版。
当您查看 x
时,请确保其他变量 (y,z)
不是 divisible by 2
,如果是,则它们小于 x
。然后在其他条件下复制相同的内容。
public int largestEven(int x, int y, int z) {
if(x % 2 == 0 && ((y % 2 != 0) || (y%2 == 0 && y < x)) && ((z % 2 != 0) || (z % 2 == 0 && z < x))) {
return x;
} else if (y % 2 == 0 && ((x % 2 != 0) || (x%2 == 0 && x < y)) && ((z % 2 != 0) || (z % 2 == 0 && z < y))) {
return y;
} else if (z % 2 == 0 && ((x % 2 != 0) || (x%2 == 0 && x < z)) && ((y % 2 != 0) || (y % 2 == 0 && y < z))) {
return z;
} else {
return 0;
}
}
您可以使用您在之前检查中获得的信息进一步优化条件检查。
public int largestEven(int x, int y, int z) {
if(x % 2 == 0 && ((y % 2 != 0) || (y%2 == 0 && y < x)) && ((z % 2 != 0) || (z % 2 == 0 && z < x))) {
return x;
} else if (y % 2 == 0 && ((z % 2 != 0) || (z % 2 == 0 && z < y))) {
return y;
} else if (z % 2 == 0) {
return z;
} else {
return 0;
}
}
一旦比较x
,当我们到达y
时,我们需要担心x
。因为它不能比 y 更高并且不能被 2 整除,所以我们可以从条件中删除它。 z
.
您必须针对每个条件检查个体和组中的偶数和奇数条件,然后检查最大和 return。
public int largestEven(int x, int y, int z) {
if (x % 2 == 0 && (y%2!=0 && z%2!=0)) {
return x;
}else if(y%2==0 && (x%2!=0 && z%2!=0) ){
return y;
}else if(z%2==0 && (x%2!=0 && y%2!=0) ){
return z;
}else if(x%2==0 && y%2==0 && z%2!=0){
return x>y?x:y;
}else if(x%2==0 && z%2==0 && y%2!=0){
return x>z?x:z;
}else if(y%2==0 && z%2==0 && x%2!=0){
return y>z?y:z;
}else if(x%2==0 && y%2==0 && z%2==0 ){
return x > y ? (x > z ? x : z) : (y > z ? y : z) ;
}else{
return 0;
}
}
public static void main(String[] args) {
System.out.println(largestEven(6, 3, 4)); //prints 6
System.out.println(largestEven(2, 4, 8)); //prints 8
System.out.println(largestEven(2, 1006, 1003)); //prints 1006
}