Как вернуть значение с вложенного for c if.

 
 
 
Сообщения:3
Добрый день! Подскажите как вернуть значение с метода ?


public int [] SummOfTwo (int[] nums,int target) {

for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] == target - nums[i]) {
return new int [] {i,j} ;

}

}}



}
 
 
Сообщения:1046
компьютер ругается на тему, что не всегда может что то вернуть. в зависимости от задачи либо верни return new int[] {-1, -1}; либо кинь IllegalArgumentException.
первый просто говорит, что ничего не найдено( имей в виду, что этот результат нужно обрабатывать особенно) , а второй для случаев, когда отсутствие результата есть ошибка.
 
 
Сообщения:3
Спасибо! Второй вариант Помог )

я так понял такая обработка актуальна когда "return" зависит от "if" и если он не срабатывает выкидывается исключение.
 
 
Сообщения:1046
    public int[] SummOfTwo(int[] nums, int target)
    {

        for (int i = 0; i < nums.length; i++)
        {
            for (int j = i + 1; j < nums.length; j++)
            {
                if (nums[j] == target - nums[i])
                {
                    return new int[]{i, j};
                }
            }
        }

        return new int[]{-1, -1};
    }

так просто правильно, а второй вариант с исключением нужен только если в задаче чётко говорится, что ответ будет гарантированно найден и отсутствие ответа, то-есть нормальное завершение цикла, является ошибкой.
 
 
Сообщения:3
Ага, понял, благодарю!
 
Модераторы:frymock
Сейчас эту тему просматривают:Нет