Вы не можете вернуться в два раза, вы можете иметь только 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
В общем, вы должны принять ответ @ DARDO в как это было правильно, и во-первых, и у него было больше оборотов. Оба правильные, хотя. – aglassman