在Java中返回整数值

use*_*293 0 java

public class MultiplicationClass{

int answer;
int random;
int random2;

int create(){
    random = (int)(1+Math.random()*15);
    random2 = (int)(1+Math.random()*15);
    return random;
    return random2;
}

boolean checkAnswer(int useranswer){
    if(useranswer==getAnswer()){
        return true;
    }else{
        return false;
    }
}

int getAnswer(){
    return random*random2;
} 

}
Run Code Online (Sandbox Code Playgroud)

此代码始终给出错误: unreachable statement in the line "return random2"

dar*_*rdo 6

你不能两次返回,你只能有1个return语句.

return random;
return random2; // This one will never be reached since you've already returned from the method.
Run Code Online (Sandbox Code Playgroud)

如果方法具有返回值,则返回int,该方法必须至少返回一个值.返回语句之后的任何指令,如果返回没有被分支本身包围,将无法访问并抛出编译错误,如您所见.

我将用几个例子来解释多个分支:

public int someMethod(int i) {
  if(i == 0) {
    return i;
  }
}
Run Code Online (Sandbox Code Playgroud)

由于如果i不等于0会发生什么事情,编译器不知道如何返回该方法,则此方法将无法编译.要解决此问题,无论是添加else还是最终返回语句,其中任何一个都可以.

public int someMethod(int i) {
  if(i == 0) {
    return i;
  }
  return 2;
}
Run Code Online (Sandbox Code Playgroud)

要么:

public int someMethod(int i) {
  if(i == 0) {
    return i;
  } else {
    return 2;
  }
}
Run Code Online (Sandbox Code Playgroud)

现在编译器知道我是不是0,它可以返回某种值.

另外,不相关的说明,但看​​看你如何编写你的代码,我猜你来自C背景.简而言之,您的所有方法和变量都是默认范围或包私有.即使该类被声明为public,它们也只能由类本身以及与它共享相同包的类访问.

可能想看这里:

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html


Mar*_*ler 5

Java中的每个方法只能返回一个值.在您的示例中,您不必返回任何值,因为您将这些值设置为全局变量.所以这应该足够了:

void create(){
    random = (int)(1+Math.random()*15);
    random2 = (int)(1+Math.random()*15);
}
Run Code Online (Sandbox Code Playgroud)

如果要返回两个值,只需调用该方法两次并将其设置为变量,如下所示:

int create(){
    int random = (int)(1+Math.random()*15);
    return random;
}

...

int getAnswer(){
    answer = create();
    answer2 = create();
    return answer*answer2;
} 
Run Code Online (Sandbox Code Playgroud)