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"
你不能两次返回,你只能有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
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)
| 归档时间: |
|
| 查看次数: |
31432 次 |
| 最近记录: |