Java 不能在 if/else 语句中使用 return 变量

Java cannot return variable within if/else statement

我遇到了一个问题,我无法 return 我在 if/else 语句中使用的变量。 class 掷两个骰子并将骰子相加,两个数字中较大的在“十”位,两个数字中较小的在“个”位(这是针对一个名为 Mäxchen 的德国饮酒游戏,我正在尝试编写代码)。我正在使用 eclipse,Java 18 和 Windows 10。这是我目前的代码:

public int rollDice() {

    int result = 0;
    
    Random ran = new Random();
                
            int die1;
            int die2;
            
            die1 = ran.nextInt(6)+1;
            die2 = ran.nextInt(6)+1;
            
    if(die1>die2) {
        int result;
        result = (die1*10) + die2;
        System.out.println("The result is: " + result + "\n");
    } else if(die2>die1) {
        int result;
        result = (die2*10) + die1;
        System.out.println("The result is: " + result + "\n");
    } else if(die1==die2) {
        int result;
        result = (die1*10) + die2;
        System.out.println("The result is: " + result + "\n");
    }
    
    return result;
        
}

每次的错误信息是:

duplicate local variable result

我怎样才能改变它以return想要的结果?

在每个 if 块中这样做的目的是什么?:

int result;

这就是错误告诉您的内容。您已经在方法中定义了一个名为 result 的变量,但是在每个 if 块中您定义了 另一个 变量,名为 result.

这里只需要一个名为result的变量。只需删除 if 块中的那些声明即可。

您多次声明变量 result,这是不允许的。

只需删除这 3 个 int result; 语句(在 if/else 语句中),你就会没事的。

变量在 class 中声明一次(在您的情况下),然后使用。

public int rollDice() {

int result = 0;

Random ran = new Random();
            
        int die1;
        int die2;
        
        die1 = ran.nextInt(6)+1;
        die2 = ran.nextInt(6)+1;
        
if(die1>die2) {
    result = (die1*10) + die2;
    System.out.println("The result is: " + result + "\n");
} else if(die2>die1) {
    result = (die2*10) + die1;
    System.out.println("The result is: " + result + "\n");
} else if(die1==die2) {
    result = (die1*10) + die2;
    System.out.println("The result is: " + result + "\n");
}

return result;
    

}