当前位置: 首页 > 知识库问答 >
问题:

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

计均
2023-03-14

我正在为一个班级作业制作一个石头剪刀游戏,我正在尝试编写一个方法,根据用户获胜、计算机获胜还是平局,返回整数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;
    }
}

共有3个答案

养淇
2023-03-14

编译器不知道输入必须是石头、布或剪刀。如果您保护输入,则

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

应该只是

else {

或者,在方法末尾添加默认错误返回,如

return -1;
慕容玉书
2023-03-14

由于返回语句都在一个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
}
宣弘新
2023-03-14

因为你答应过你会的!

公共静态int playGame(字符串用户选择)

里面的int写着“以我的名誉起誓,我会返回int”

如果你不履行promise,编译器就会变得暴躁。

这意味着无论通过代码执行哪个分支,都必须返回int。

 类似资料:
  • 根据文档,newInstance()返回一个T:https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#newInstance() 所以,如果我有一个返回T的方法,为什么我必须强制转换构造函数的返回。newInstance()到T?

  • 为了方便起见,我将setter方法返回类型更改为对象,例如: 但在tomcat做出这一改变之后 PropertyNotFoundException: 为了消除这个异常,我将修饰符从private更改为public,但仍然得到相同的错误。所以我有两个问题; null

  • python指标代码pymetrics可用于分析代码文件的复杂性。它们创建了两个不同的指标: 整个文件的COCOMO 2的SLOC度量 我想知道这些指标的数值意味着什么,而不是它们的定义。值“1”是什么意思?一个数字‘5’?一个“10”的数字?越高越好还是越低越好?什么数值指的是好代码,什么指的是真正的坏代码?上网搜了一下,给了一些提示,但我不确定分类指的是公制(1)还是公制(2)。我想让这两个数

  • 问题内容: 它返回此错误:此方法必须返回boolean类型的结果。我究竟做错了什么? 问题答案: 现在,不能保证该函数返回a ,因为很可能不会输入任何一条语句。 您可以像这样修复它(但 只有 在您的逻辑确实需要它的情况下 才 这样做):

  • 问题内容: 以下代码在该行生成此错误消息。 这行有多个标记 -实现android.view.View.OnClickListener.onClick -new View.OnClickListener(){}类型的onClick(View)方法必须覆盖超类方法 我不明白为什么。这段代码摘自我所见过的众多示例。什么可能是错的? 问题答案: 检查项目的属性,并验证 Java Compiler- > C

  • 问题内容: 由于在Java中使用了泛型,我最终不得不实现一个具有as返回类型的函数: 并且编译器要求我返回 一些东西 。现在我只是返回,但是我想知道这是否是好的编码实践… 我问的是 V oid,而不是 V oid。类, 而不是 保留关键字。 我也试过,,,,没有回报可言,但都不会在所有的工作。(出于或多或少明显的原因) 那么,如果函数的返回类型为,我应该返回什么呢? 该课程的一般用途是什么? 问题