【发布时间】:2020-07-07 12:25:25
【问题描述】:
我正在做一个小小的谷歌面试问题。在循环中找到与给定数字相加的一对数字。我找到了组成 8 的数字 2 和 6,所以我说 match = true 以便 while 循环停止,但是它仍然继续进行,直到找到第二个 6 和 2 但是,我已经以另一种方式找到了这些数字周围,我曾预计我的循环会中断,因为我的 if 语句指出是否有任何 2 个数字给出总和,match = true 因此终止循环,但我想我错了。
但是,如果我摆脱 while 语句并返回;一旦找到匹配项,它就会中断而不寻找第二个匹配项(我想要它)。
为什么会这样,两者的逻辑在我看来完全一样。
使用 while(condition) 方法
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;
}
}
}
}
}
}
【问题讨论】:
标签: java loops while-loop return