当我尝试编译以下代码时:
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
为数字,整数,如1
、2
、3
。boolean
只是true
或false
。你是在拿苹果和橘子作比较,那是行不通的。
解决方案也就是说,根据您的方法名称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
视为0
或1
。Java严格区分它们。
你得到这个错误是因为类型不兼容。你试着给int类型赋布尔值