2013-04-17 3 views
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"Возвращающиеся целочисленных значений в Java

+0

В общем, вы должны принять ответ @ DARDO в как это было правильно, и во-первых, и у него было больше оборотов. Оба правильные, хотя. – aglassman

ответ

4

Каждый метод в Java может возвращать только одно значение. В вашем примере вам не нужно возвращать какое-либо значение, потому что вы присваиваете эти значения глобальным переменным. Таким образом, это должно быть достаточно:

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

Если вы хотите, чтобы вернуть два значения, просто вызовите метод дважды и Asign его своим переменным, как это:

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

... 

int getAnswer(){ 
    answer = create(); 
    answer2 = create(); 
    return answer*answer2; 
} 
+1

Спасибо, что я нашел вашу информацию весьма полезной, и мне удалось решить мои проблемы :) – user2291293

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

Этот метод не компилируется из-за того, что произойдет, если я не равен 0, то компилятор знает, как does't для возврата метода. Чтобы исправить это, добавьте else или final return statement, любой из них будет работать.

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. Просто хедз-ап, все ваши методы и переменные - это то, что известно как область по умолчанию, или пакет-частный. Несмотря на то, что класс объявлен общедоступным, доступ к ним будет доступен только самому классу и классам, которые совместно используют один и тот же пакет.

можете посмотреть здесь:

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

+0

Спасибо, я нашел вашу информацию весьма полезной, и мне удалось решить мои проблемы :) – user2291293

+0

Не проблема, надеюсь, вам понравится изучать язык =) – dardo

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

Вы не можете написать код после возвращения заявления.

как случайные и Random2 возвращение же значение, то

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

    }