不兼容类型:Boolean不能转换为int



当我尝试编译以下代码时:

public class Main {
public static void main(String [] args) {
int newnumber = sumDigit(2);
System.out.println(newnumber);
}
public static boolean sumDigit(int num) {
if (num == 0) {
return true;
}
}
}

我得到这个错误信息:

Main.java:3: error:不兼容类型:boolean不能转换为int

int newnumber = sumDigit(2);

为什么?

说明

你的方法声明返回一个boolean:

public static boolean sumDigit(int num) {
^^^^^^^

你也返回一个boolean:

return true;
^^^^

但是在您的main方法中,您期望int:

int newnumber = sumDigit(2);
^^^

int为数字,整数,如123boolean只是truefalse。你是在拿苹果和橘子作比较,那是行不通的。


解决方案也就是说,根据您的方法名称sumDigit,我假设您打算实际计算并返回int。所以:

public static int sumDigit(int num) {
int result = ...
// compute the sum
return result;
}

然后它也会编译并工作。

如果您实际上打算返回boolean,我建议将该方法重命名为isZero,以更好地指示它实际计算的内容:

public static boolean isZero(int num) {
return num == 0;
}

但是你也必须改变你在main中期望的结果类型:

boolean result = isZero(2);
System.out.println(result); // false

无论你做什么,你的方法返回的类型必须与你期望的结果类型一致。

其他语言

请注意,Java不允许自动将boolean转换为int,例如c++ 将bool视为01。Java严格区分它们。

你得到这个错误是因为类型不兼容。你试着给int类型赋布尔值

最新更新