public boolean Winner() {
for (int z = 0; z < 3; z++) {
if (board[z] != null && board[z] == board[z+3] && board[z] == board[z+6]
) {
return true;
}
}
for(int i=0; i<7;i+=3){
if (board[i] != null && board[i] == board[i+1] && board[i] == board[i+2]) {
return true;}
}
}
它返回给我这个错误:此方法必须返回boolean类型的结果。我做错了什么?
答案 0 :(得分:8)
目前,该函数无法保证返回boolean
,因为有可能不会输入任何if
语句。
您可以像这样修复它(但仅执行此操作,如果它实际上是您的逻辑需要的那样!):
public boolean Winner() {
for (int z = 0; z < 3; z++) {
if (board[z] != null && board[z] == board[z+3] && board[z] == board[z+6]
) {
return true;
}
}
for(int i=0; i<7;i+=3){
if (board[i] != null && board[i] == board[i+1] && board[i] == board[i+2]) {
return true;}
}
return false;
}
答案 1 :(得分:3)
Java编译器不假设for
循环将进行迭代或if
语句块将运行。
存在没有return
语句的执行路径。如果执行路径没有执行任何现有的return
语句并且掉到底部会发生什么?那里没有return
。
在底部添加return
。
答案 2 :(得分:2)
该方法可以退出的所有可能方式都需要返回一些东西。如果你的代码通过两个for循环而没有if条件计算为true,那么你需要在结尾指定返回的返回值。
答案 3 :(得分:0)
编译器不知道至少会执行一个循环。它考虑了执行的所有可能性,其中之一是两个循环都不会被执行,在这种情况下没有返回语句。所以也要在循环中插入一个return语句。
答案 4 :(得分:0)
这个问题的答案很简单。这也发生在我身上。您的代码中的问题是,如果“ if”语句错误,您不会对计算机说该怎么办,因此您只需向每个“ if”添加“ else {return false}”。另一个提示是:请使您的代码更清晰易读。
public boolean Winner() {
for (int z = 0; z < 3; z++) {
if (board[z] != null && board[z] == board[z+3] && board[z] == board[z+6]) {
return true;
} else {
return false;
}
}
for (int i=0; i<7; i+=3) {
if (board[i] != null && board[i] == board[i+1] && board[i] == board[i+2]) {
return true;
} else {
return false;
}
}
}