Я делаю небольшой вопрос об интервью в Google. Найдите пару чисел в al oop, которые складываются с указанным числом. Я нашел числа 2 и 6, которые составляют 8, поэтому я говорю match = true, так что пока l oop останавливается, однако он продолжается до тех пор, пока не найдет второе, равное 6 и 2, однако те числа, которые я уже нашел, просто наоборот, и я ожидал, что мой l oop сломается, так как мой оператор if утверждает, что если есть какие-либо 2 числа, которые дают сумму, match = true, следовательно, завершая l oop, я думаю, что я ошибаюсь.
Однако, если я избавлюсь от оператора while и просто вернусь; как только совпадение найдено, оно разрывается без поиска второго совпадения (что я и хочу).
Почему это происходит, логика c обоих кажется мне абсолютно одинаковой.
Использование метода while (условие)
public class Main {
public static void main(String[]args){
int[] list = new int[]{1,2,1,1,1,6};
boolean match = false;
int sumNeeded = 8;
while(!match){
for(int i = 0; i < list.length; i ++){
for(int j = (list.length -1); j >= 0; j --){
if(list[i] != list[j]){
if(list[i] + list[j] == sumNeeded){
System.out.println("The numbers are = " + list[i] + " & " + list[j]);
match = true;
}
}
}
}
}
}
}
Использование return
public class Main {
public static void main(String[]args){
int[] list = new int[]{1,2,1,1,1,6};
int sumNeeded = 8;
for(int i = 0; i < list.length; i ++){
for(int j = (list.length -1); j >= 0; j --){
if(list[i] != list[j]){
if(list[i] + list[j] == sumNeeded){
System.out.println("The numbers are = " + list[i] + " & " + list[j]);
return;
}
}
}
}
}
}