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

编译错误:缺少return语句[重复]

焦苏燕
2023-03-14
CrapsAnalysis.java:48: error: missing return statement
    }
    ^
1 error
Process javac exited with code 1

代码:

public class CrapsAnalysis
{   
public static int rollDie( int n) {
    return (int)(Math.random()*n) + 1 ;
}
public static int rollDice( ) {
    return rollDie(6) + rollDie(6) ;
}
public static boolean playOneGame( ) {
    int newDice = rollDice();
    int roll = rollDice(); //first roll of the dice
    int playerPoint = 0; //player point if no win or loss on first roll
    if (roll == 7 || roll == 11)
        return true;
    else if (roll == 2 || roll == 3 || roll == 12)
        return false;
    else    
        playerPoint = roll;
    do {
        if (rollDice() == 7)
            return false;
        else if (rollDice() == playerPoint) 
            return true;
        else
            newDice = rollDice();
        } while (rollDice() != playerPoint || rollDice() != 7) ;
    }
}

共有1个答案

岳嘉容
2023-03-14

下面是一个非常精简的代码版本:

public static boolean playOneGame()
{
    if(condition1 == true)
    {
        //code1
        return true;
    }
    else if(condition2 == true)
    {
        //code2
        return false;
    }
    else
    {
        //code3
    }
    //code4
}

如果condition1condition2为true,则playOneGame()将返回true或false。但是,如果condition1condition2都为false,则将运行的唯一代码是code3。code3不包含return语句,因此从理论上讲,playOneGame()不会返回任何东西是有可能的。您知道condition1condition2永远不会同时为false,但java编译器不会,因此它会抛出编译器错误。如果它没有抛出编译器错误,而condition1condition2不知怎么都变成false,它将抛出运行时错误。运行时错误比编译器错误更难调试,因此编译器抛出一个易于修复的错误是在帮您一个忙。

若要修复缺少的return语句,请向code3或CODE4添加return语句。

 类似资料:
  • 我真的弄不明白为什么我的代码会导致这个错误,一切看起来都是正确的,以为它总是出现,因为它缺少一个return语句 我试着寻找解决方案,我看到“if”后面的“while”是一个解决方案,但由于我需要多个数字,我不能使用while,而必须使用“what if”。

  • 此ProductDAO类返回用户的产品列表,但Netbeans中的编译器显示“Missing return statement”。有进展吗?

  • 我一直得到一个丢失的返回语句错误,但我不知道在哪里。每次跟随代码,我都感觉到至少有一个if语句提供了return语句。 代码:

  • 我有以下代码 null 我错过了什么?

  • 我遇到一种情况,一个non-void方法缺少一个return语句,而代码仍然在编译。我知道while循环之后的语句是不可达的(死代码),并且永远不会被执行。但是为什么编译器甚至不警告返回一些东西呢?或者为什么一种语言允许我们有一个非void的方法,它有一个无限循环,而不返回任何东西? 如果我在while循环中添加一个break语句(即使是一个条件语句),编译器就会抱怨那些臭名昭著的错误:在Ecli

  • 所以我得到了一个编译器错误,我丢失了一个返回语句,我已经研究了其他类似的问题,但我仍然对这个问题感到困惑。 如果之前有人问过这个问题,我会提前道歉,但我已经看过了其他各种问题,我似乎无法弄清楚这一点。