上两节课里给大家讲了分支流程和循环流程,那么,随着我们的编码能力提升,可能会提出如下问题:
1、如果我想在循环当中发现问题或已经得到答案,想停止循环怎么办?
2、如果我想发现了问题,跳过这一次循环怎么办?
java是万能的,它提供了解决方案。
break关键字能跳出循环,continue关键字跳过这一次循环的后续内容。
今天的内容就是:循环和流程控制
1、break
2、continue
3、return
第一部分:break
break语句可以跳出一个循环或一个switch分支。
就一个关键字,那我们直接看用法。
1、循环:得到数组当中数值为5的元素。
分析:遍历这个数组,如果找到第一个结果为5的元素,那么直接跳出循环,返回该值。
int[] arr = {1,2,5,7,9};
示例:
int result = 0;
for(int i:arr){
if(arr[i]==5){//找到了改值
result = arr[i];//用循环的外部变量接收这个值
break;//跳出循环
}
}
break也适用于while,使用while实现上面的问题
int result = 0,i=0;
while(i<arr.length){
if(arr[i]==5){
result = 5;
break;
}
i++;
}
2、switch分支:跳出switch的分支。
在switch当中,如果进入到某一分支,该分支结尾没有break,那么,会在本分支语句执行完继续判断是否符合下一分支。
所以,按照实际情况来说,不会发生同时两个分支的值都成立的情况。
因此建议大家必须在每个分支后面加上break,提高效率,减少无用的判断。
我们看例子。判断数字的值,如果是0代表男,1代表女,打印男女信息。
public static void printSex(int x){
switch(x){
case 0:System.out.println("男");break;
case 1:System.out.println("女");break;
}
}
需要注意的是:break只能跳出一层循环,当存在外层循环的话,只能跳出离他最近的一层循环。
第二部分:continue
continue用于跳过本次循环的后续内容,直接进入下一次循环(如果下一次条件成立)。
我们看例子,打印1-10的偶数。
分析:循环1-10的数字,如果是奇数,跳过打印,直接下一个数字。
代码:
for(int i=1;i<=10;i++){
if(i%2==1){//如果是奇数
continue;//跳过后面的循环语句(打印),直接进入下一次循环
}
System.out.println(i);
}
当然,continue也是适用于while的.使用while实现
int i =1;
while(i<=10){
if(i%2==1){
continue;
}
System.out.println(i);
i++;
}
需要注意的是, continue也只能跳过一层循环,如果存在外层循环的话,只能跳过离他最近的循环。
第三部分:return
return关键字是作为方法的返回结果用的,但是它也有循环控制的效果。
当使用return关键字后,方法直接返回结果,不继续执行后面的代码,不管所属的代码是否是循环还是普通流程代码。
同时,return还可以作为void的方法返回,只不过不需要结果。
我们看看例子。
1、判断一个数字是否是2的正倍数。
public static boolean isTowTimes(int i){
if(i==2){
return true;//如果是2,肯定是,直接返回不判断
}
if(i>0 && i%2==0){
return true;//其他情况判断除以2的余数,且不为0或负数
}
return false;
}
public static int getFive(int[] arr){
for(int i :arr){
if(i==5){
return i;//如果某个元素是5,直接返回
}
}
return -1;//如果没有返回-1
}
3、void方法的返回控制。例如打印字符串。
public static void printString(String s){
if(null == s){
return;//如果字符串为空对象,不打印直接返回
}
if("".equals(s)){
return ;//如果字符串为空值,不打印直接返回
}
System.out.println(s);
}
以上,就是我们的循环控制。
break:跳出所属的最近一层循环。
continue:跳过所属的最近一层循环的后续代码。直接进入下一次循环。
return:直接返回结果,无论何种代码结构。void也支持。
are you get it?