2013-08-28 3 views
1

Мне было интересно, как вы собираетесь выйти из метода раньше. Если бы это был тип void, я бы просто «возвращал», но поскольку это тип int, он хочет, чтобы я возвращал целое число. Как вернуться на главную, не возвращая ни одного целого числа. Благодарю.Выход из непустого метода? (Java)

public static int binarysearch(String[] myArray, String target, int first, int last) 
{ 
    int index; 

    if (first > last) 
    { 
     index = -1; 
     System.out.println("That is not in the array"); 
     // Return to main here 
    } 
+0

Существует только два способа выхода из этого метода: либо вернуть целое число, либо выбросить исключение. – sbk

+0

Это исключительный случай? То есть ваш метод имеет часть контракта, который должен быть <= последним? Если это так, то вы можете подумать о том, чтобы исключить здесь исключение, возможно, IllegalArgumentException. – shoover

ответ

3

Вы не можете вернуться из метода без возвращаемого значения в традиционном смысле.

Вы можете либо return -1;, либо заявить в своей документации, что -1 представляет собой неудачный поиск, или вы можете отправить exception. Если вы выбросите исключение, вы должны поймать его. Вы можете узнать больше об этом в связанной статье.

+1

... если исключение, которое вы выбрали, является RuntimeException – sbk

+0

Это правда, но это ошибка, которую можно ожидать во время компиляции, поэтому это не должно быть RuntimeException. – wjl

0

Пара вариантов .... 1. break; 2. верните значение, которое, как вы знаете, не будет возвращено из действительного результата. Например, 99999999 или -34

Это будут простые варианты ....

Редактировать , конечно, перерыв будет только выйти из цикла. Поэтому youd все равно нужно вернуть известное значение.

+2

'break;' не выйдет из метода. Он используется для выхода из цикла. – wjl

+0

Правда. Я имел в виду, что он может использоваться для выпрыгивания и возврата определенного значения. По общему признанию, это объясняется не очень хорошо. –

Смежные вопросы