此方法必须返回boolean,java类型的结果

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类型的结果。 我究竟做错了什么?

现在,函数不能保证返回一个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; } 

Java编译器不假设for循环将具有迭代或if语句块将运行。

存在没有return语句的执行路径。 如果执行路径没有执行任何现有的return语句并且掉到底部会发生什么? 那里没有return

在底部添加一个return

方法可以退出的所有可能方式都需要返回一些东西。 如果您的代码通过两个for循环而没有if条件计算为true,那么您需要在结尾处返回指定返回的内容。

编译器不知道至少会执行一个循环。 它考虑了执行的所有可能性,其中之一是两个循环都不会执行,在这种情况下没有返回语句。 所以也要在循环中插入一个return语句。

这个问题的答案很简单。 它也发生在我身上。 您的代码中的问题是,如果“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; } } }