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"
答案 0 :(得分:6)
你不能两次返回,你只能有1个返回声明。
return random;
return random2; // This one will never be reached since you've already returned from the method.
如果方法具有返回值,则返回一个int,该方法必须返回至少一个值。返回语句之后的任何指令,如果返回没有被分支本身包围,将无法访问并抛出编译错误,如您所见。
我将用几个例子解释多个分支:
public int someMethod(int i) {
if(i == 0) {
return i;
}
}
由于如果i不等于0,编译器不知道如何返回该方法,则此方法将无法编译。要解决这个问题,可以添加else或者最终返回语句,其中任何一个都可以。
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;
}
}
现在编译器知道我是不是0,它可以返回某种值。
另外,不相关的说明,但看看你如何编写代码,我猜你是从C背景来的。简而言之,您的所有方法和变量都是默认范围或包私有。即使该类被声明为public,它们也只能由类本身以及与它共享相同包的类访问。
可能想看这里:
http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
答案 1 :(得分:5)
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;
}
答案 2 :(得分:0)
int create(){
random = (int)(1+Math.random()*15);
random2 = (int)(1+Math.random()*15);
return random;
return random2;
}
返回语句后无法编写代码。
随机和随机2返回相同的值然后
int create(){
random = (int)(1+Math.random()*15);
return random;
}
答案 3 :(得分:-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);
}
}