这里主要涉及一个双层循环跳出问题,可以采取两种方法,一种是使用关键字实现break 后的跳转。
//定义num1和num2
int num1 = 0,num2 = 0;
//定义一个集合列表
ArrayList<Integer> list = new ArrayList<Integer>();
//定义两个数字的乘积
int product = 0;
//设置一个标签,名字为l
l:
for(int i = 0;i < array.length;i ++)
{
for(int j = 0;j < array.length;j ++)
{
if(array[i] + array[j] == sum)
{
num1 = array[i] < array[j] ? array[i] : array[j];
num2 = array[j] > array[i] ? array[j] : array[i];
product = array[i] * array[j];
break l;
}
}
}
//遍历所有可能
for(int i = 0;i < array.length;i ++)
{
for(int j = 0;j < array.length;j ++)
{
if(array[i] + array[j] == sum && i != j)
{
if(array[i] * array[j] < product)
{
num1 = array[i] < array[j] ? array[i] : array[j];
num2 = array[j] > array[i] ? array[j] : array[i];
}
}
}
}
if(num1 == 0 && num2 == 0);
else
{
list.add(num1);
list.add(num2);
}
return list;
但是不建议这样使用,所以我们一般采用设置一个布尔变量来实现跳转。
//定义num1和num2
int num1 = 0,num2 = 0;
//定义一个集合列表
ArrayList<Integer> list = new ArrayList<Integer>();
//定义两个数字的乘积
int product = 0;
//设置一个标志,用于跳出双层循环
boolean flag = false;
//双层循环来获得一个初始值
for(int i = 0;i < array.length;i ++)
{
for(int j = 0;j < array.length;j ++)
{
if(array[i] + array[j] == sum)
{
num1 = array[i] < array[j] ? array[i] : array[j];
num2 = array[j] > array[i] ? array[j] : array[i];
product = array[i] * array[j];
//修改布尔值来实现外层循环跳出
flag = true;
break;
}
}
if(flag) break;
}
//遍历所有可能
for(int i = 0;i < array.length;i ++)
{
for(int j = 0;j < array.length;j ++)
{
if(array[i] + array[j] == sum && i != j)
{
if(array[i] * array[j] < product)
{
num1 = array[i] < array[j] ? array[i] : array[j];
num2 = array[j] > array[i] ? array[j] : array[i];
}
}
}
}
if(num1 == 0 && num2 == 0);
else
{
list.add(num1);
list.add(num2);
}
return list;