0
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;
} 

}

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

4

4 回答 4

6

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

return random;
return random2; // This one will never be reached since you've already returned from the method.

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

我将通过几个示例来解释多个分支:

public int someMethod(int i) {
  if(i == 0) {
    return i;
  }
}

这个方法不会编译,因为如果 i 不等于 0 会发生什么,编译器不知道如何返回该方法。要解决此问题,请添加 else 或最终 return 语句,其中任何一个都可以工作。

public int someMethod(int i) {
  if(i == 0) {
    return i;
  }
  return 2;
}

或者:

public int someMethod(int i) {
  if(i == 0) {
    return i;
  } else {
    return 2;
  }
}

现在编译器知道如果 i 不为 0,它可以返回某种值。

另外,不相关的注释,但看看你是如何编写代码的,我猜你来自 C 背景。请注意,您所有的方法和变量都是所谓的默认范围或包私有。即使该类被声明为公共的,这些也只能由该类本身以及与其共享同一个包的类访问。

可能想看这里:

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

于 2013-04-17T14:51:58.053 回答
6

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

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

如果要返回两个值,只需调用该方法两次并将其分配给您的变量,如下所示:

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

...

int getAnswer(){
    answer = create();
    answer2 = create();
    return answer*answer2;
} 
于 2013-04-17T14:55:37.490 回答
0
int create(){
    random = (int)(1+Math.random()*15);
    random2 = (int)(1+Math.random()*15);
    return random;
    return random2;
}

您不能在返回语句后编写代码。

作为 random 和 random2 返回相同的值

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

    }
于 2013-04-17T14:53:52.910 回答
-1

<p>
i've tryed this one and it worked
check my github repository 
https://github.com/UnknownAD/CommonProgramingIssues


public class s{
        public static void main(String [] args){
        System.out.println("HI there");
        var primal=17;
        var edit=Integer.toString(primal);
        System.out.println(edit);
        method("22");
        }
        static void method(String tr){
        int stdin=Integer.parseInt(tr);
        int proc=stdin+5;
        String stdout=Integer.toString(proc);
        System.out.println(proc);
}
}

于 2020-09-11T18:11:48.987 回答