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

时间:2013-12-02 20:15:51

标签: java boolean typeerror

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

5 个答案:

答案 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;
   }
  }
 }