**已关闭。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想要改进此问题?**更新问题,使其位于堆栈溢出主题上。
四天前关门。
改进这个问题
我正在编写一个java程序,它接受三个数字,如果其中任何一个是相同的,则忽略该数字。运行该检查后,它将剩余的数字相加。但是,java试图将我的变量识别为布尔变量而不是int变量。我现在使用的语法是:
public class A2 {
public static int loneSum(int a, int b, int c) {
if (a = b && a != c) {
return c;
} else if (a = c && a != b) {
return b;
} else if (b = c && a != b) {
return a;
} else if (a = b && a = c) {
return 0
} else {
return a + b + c
}
}
public static void main(String[] args) {
System.out.println(loneSum(1, 2, 3));
System.out.println(loneSum(3, 2, 3));
System.out.println(loneSum(3, 3, 3));
}
}
我的ide在if语句条件中给了我一个错误,错误消息是“参数类型int,boolean的运算符&&未定义”。我想知道如何解决这个问题,因为方法中没有布尔值。
3条答案
按热度按时间mwg9r5ms1#
此代码正在使用等于赋值运算符(
=
)其中,显然等于等于运算符(==
)是有意的。equals赋值运算符为变量赋值,并返回变量的新值。在这种情况下,,
a = b
指定的值b
变b
,并返回b
.equals相等运算符返回一个布尔值,指示两个值是否相等。同样地
!=
相等运算符返回与之相反的布尔结果==
(即。a!=b
产生与相同的结果!(a==b)
).有了这些信息,就可以很容易地了解返回编译器错误的原因。走这条河的第一条支流
if
声明:条件检查相当于
a = (b && a != c)
,即,它正在尝试分配b && a != c
到变量a
. 条件与算子(&&
)只能用于比较布尔值。然而,b
是一个int
鉴于a != c
是一个boolean
表情。这解释了返回编译器错误的原因:The operator && is undefined for the argument type(s) int, boolean
lsmd5eda2#
您的代码不正确,您必须理解=(赋值)和==(等于)运算符之间的区别。
“=”是一个赋值运算符,用于将右侧的值赋值给左侧的变量。
“==”运算符检查两个给定的操作数是否相等。如果是,则返回true。否则返回false。
这里的问题是使用赋值运算符而不是相等运算符。
更正代码:
mzmfm0qo3#
您的代码有一些小的分号错误和与运算符相关的错误,请将其与您的代码进行比较