我遇到错误:不兼容的类型:在Android Studio中编译android应用时,布尔值无法转换为int 错误。问题仅在于一种方法。
private static int get_wx_inx(String str) {
boolean equalsIgnoreCase = str.equalsIgnoreCase("木");
int equalsIgnoreCase2 = str.equalsIgnoreCase("火");
if (str.equalsIgnoreCase("土")) {
equalsIgnoreCase2 = true;
}
if (str.equalsIgnoreCase("金")) {
equalsIgnoreCase2 = 3;
}
return str.equalsIgnoreCase("水") ? 4 : equalsIgnoreCase2;
}
我不知道有什么问题。您能帮我解决问题吗?预先感谢。
答案 0 :(得分:2)
您的问题尚不清楚,但是您可能想要这样:
private static int get_wx_inx(String str) {
if(str.equalsIgnoreCase("木")) {
return 0;
} else if(str.equalsIgnoreCase("火")) {
return 1;
}else if(str.equalsIgnoreCase("土")) {
return 2;
} else if(str.equalsIgnoreCase("金")) {
return 3;
} else if(str.equalsIgnoreCase("水")) {
return 4;
} else {
return 0;// write default return here. If every condition goes false then this default will be return.
}
}
答案 1 :(得分:1)
问题在于以下语句:
int equalsIgnoreCase2 = str.equalsIgnoreCase("火");
equalsIgnoreCase()
方法返回一个boolean
值,并且您将其分配给一个int
值。这就是为什么会出现此错误。
答案 2 :(得分:1)
您可以在switch语句中使用Strings并返回各自的int值。
https://docs.oracle.com/javase/7/docs/technotes/guides/language/strings-switch.html
因为我们不能为返回值使用混合类型。您可以考虑0(FALSE)和1(TRUE)。或任何此类随机值。
答案 3 :(得分:0)
Java不是C语言,因此布尔值不能是整数,它们是完全不同的类型,不能混合使用。在第三行中,您将布尔值分配给int