Java - 为什么Eclipse告诉我我的方法必须返回int类型?

时间:2014-10-27 02:54:50

标签: java eclipse methods

我正在为一个课程作业制作一个石头剪刀游戏,我正在尝试编写一个返回整数1,2或3的方法,具体取决于用户是赢,计算机获胜,还是领带。我们不允许简单地返回“你赢了!”的信息。或者“你输了!”或者“领带!”在方法中,我们必须返回整数。但是,当我像这样输入代码时,我在Eclipse中收到编译器错误警告,告诉我“此方法必须返回int类型的结果。”这不是我在这里做的吗?救命! 谢谢!

public static int playGame(String userChoose) {
    System.out.println("Enter your choice.");
    userChoose=kbd.nextLine().toLowerCase();
    String computerChoose=computerChoose();
    if (userChoose.equals(computerChoose)) {
        return 3;
    }
    else if (userChoose.equals("rock")) {
        if (computerChoose.equals("scissors")) 
            return 1;
        else if (computerChoose.equals("paper")) 
            return 2;
    }
    else if (userChoose.equals("paper")) {
        if (computerChoose.equals("scissors")) 
            return 2;
        else if (computerChoose.equals("rock")) 
            return 1;
    } 
    else if (userChoose.equals("scissors")) {
        if (computerChoose.equals("paper")) 
            return 1; 
        else if (computerChoose.equals("rock")) 
            return 2;
    }
}

6 个答案:

答案 0 :(得分:3)

因为你答应过你会的!

public static int playGame(String userChoose)

那里的int说“以我为荣,我发誓我会回归一个int”

如果你没有履行承诺,编译器会变得脾气暴躁。

这意味着无论您通过代码采取什么分支,都必须返回int

答案 1 :(得分:1)

由于您的返回语句都在if-else子句中,因此 如果没有满足if-else条件,则需要提供默认返回值
类似的东西:

public static int playGame(String userChoose) {
    System.out.println("Enter your choice.");
    userChoose=kbd.nextLine().toLowerCase();
    String computerChoose=computerChoose();
    if (userChoose.equals(computerChoose)) {
        return 3;
    }
    else if (userChoose.equals("rock")) {
        if (computerChoose.equals("scissors")) 
            return 1;
        else if (computerChoose.equals("paper")) 
            return 2;
    }
    else if (userChoose.equals("paper")) {
        if (computerChoose.equals("scissors")) 
            return 2;
        else if (computerChoose.equals("rock")) 
            return 1;
    } 
    else if (userChoose.equals("scissors")) {
        if (computerChoose.equals("paper")) 
            return 1; 
        else if (computerChoose.equals("rock")) 
            return 2;
    }
    return -1; //--> the default return value
}

答案 2 :(得分:0)

编译器不知道输入必须是摇滚,纸张或剪刀。如果您保护输入,那么

else if (userChoose.equals("scissors")) {

应该只是

else {

或者,在方法结束时添加默认错误,如

return -1;

答案 3 :(得分:0)

如果没有验证

,该怎么办?

您必须提供一个返回值来解决此问题

 public static int playGame(String userChoose) {
System.out.println("Enter your choice.");
userChoose=kbd.nextLine().toLowerCase();
String computerChoose=computerChoose();
if (userChoose.equals(computerChoose)) {
    return 3;
}
else if (userChoose.equals("rock")) {
    if (computerChoose.equals("scissors")) 
        return 1;
    else if (computerChoose.equals("paper")) 
        return 2;
}
else if (userChoose.equals("paper")) {
    if (computerChoose.equals("scissors")) 
        return 2;
    else if (computerChoose.equals("rock")) 
        return 1;
} 
else if (userChoose.equals("scissors")) {
    if (computerChoose.equals("paper")) 
        return 1; 
    else if (computerChoose.equals("rock")) 
        return 2;
}
else
 return -1;

}

答案 4 :(得分:0)

总是最好使用类似返回值变量的东西,然后使用条件设置它,然后在代码的末尾返回它。例如:

int retValue = 0;
...
else if (userChoose.equals("scissors")) {
   if (computerChoose.equals("paper")) 
      retValue = 1; 
   else if (computerChoose.equals("rock")) 
      retValue = 2;
   }
}
return retValue;

答案 5 :(得分:0)

其他人已经给出了简短的回答:你的条件条款没有涵盖所有可能的状态。

稍微长一点的答案:只要你的代码处理外部输入,就必须考虑输入错误的可能性。这是编程的核心原则之一。