我正在为一个课程作业制作一个石头剪刀游戏,我正在尝试编写一个返回整数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;
}
}
答案 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)
其他人已经给出了简短的回答:你的条件条款没有涵盖所有可能的状态。
稍微长一点的答案:只要你的代码处理外部输入,就必须考虑输入错误的可能性。这是编程的核心原则之一。