跳转控制语句(break、continue、return)
跳转控制语句(break、continue、return)
1、使用跳转控制语句的原因:
想在某个循环知道到某一步的时候就结束,Java就提供了break,continue和return来实现控制语句的跳转和中断
2、break,continue,return 它们都是关键字
一、break
1、break: 中断,结束的意思
2、break的使用场景:
①在switch语句中使用(单独在if语句中不能使用)
②在循环语句中使用
③离开①②场景外,单独使用是没有意义的
break在选择结构switch语句中的使用(switch语句本身自带break)
1、需求:输入1-7,输出对应的星期
import java.util.Scanner; //第1步:导包
public class ControlDemo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //第2步:创建键盘录入对象
System.out.println("请输入您想知道星期几的数字:(1-7)");//第3步:键盘录入信息
int num = sc.nextInt(); //第4步:接收键盘录入的信息
switch (num) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("您输入的数据有误,请重新输入");
break;
}
}
}
switch语句和while语句的结合使用break
解释说明:
前面说到,当我们输出对应的数字,就会得到对应的星期几;
但是我们只能输入一次,程序就会运行停止
如果我们想要持续多次输入,需要用到循环语句while语句;
回顾while语句:
初始化语句;
while(关系表达式){
循环体语句;
控制条件语句;
}
例1:加入while语句来实现可以多次键盘输入
import java.util.Scanner; //第1步:导包
public class ControlDemo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //第2步:创建键盘录入对象
while (true) {
//接收键盘录入信息,需要放在while语句的内部,否则将会死循环
System.out.println("请输入您想知道星期几的数字:(1-7)");
int num = sc.nextInt();
switch (num) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
default:
System.out.println("您输入的数据有误,请重新输入");
break;
}
}
执行的结果如下:
请输入您想知道星期几的数字:(1-7)
2
星期二
请输入您想知道星期几的数字:(1-7)
3
星期三
请输入您想知道星期几的数字:(1-7)
5
星期五
请输入您想知道星期几的数字:(1-7)
加入flag终止程序运行
例2:前面说到,可以连续多次键盘输入,但是程序不会停止运行
如果我们想要输入了n次后,想停止运行,那么就需要加入flag
import java.util.Scanner;
public class ControlDemo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean flag = true; //定义一个boolean类型的
while (flag) { //while后面的括号也要改为flag
System.out.println("请输入您想知道星期几的数字:(1-7)");
int num = sc.nextInt();//接收键盘录入的信息,需要放在while内部(否则会死循环)
switch (num) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期日");
break;
case 0:
flag = false; //当匹配到0,while语句false,终止运行,跳出循环
System.out.println("欢迎下次使用");
break;
default:
System.out.println("您输入的数据有误,请重新输入");
break;
}
}
执行结果如下:
请输入您想知道星期几的数字:(1-7)
1
星期一
请输入您想知道星期几的数字:(1-7)
3
星期三
请输入您想知道星期几的数字:(1-7)
0
欢迎下次使用
Process finished with exit code 0
循环for语句和if语句结合使用break
例:循环打印1-10,加入break,让它在打印3的时候,结束for循环
(打印4的时候,表示4要打印出来)
public class ContralDemo2 {
public static void main(String[] args) {
for(int i =1;i<=10;i++){
//输出语句必须在if语句前面,否则只会打印1、2、3
System.out.println(i);
if(i==4){
break;
}
}
}
}
执行结果如下:
1
2
3
4
Process finished with exit code 0
break的跳出
单层跳出:在当前for循环中使用break,只结束当前for循环
多层跳出:带标签的break,格式:标签名 : 循环语句(开发中如果没有特殊需求,一般不会去使用)
单层跳出:
需求:九九乘法表,在内循环j是4的时候,我们break一下
public class ControlDemo3 {
public static void main(String[] args) {
for(int i =1;i<=9;i++){ //外层控制着行
for(int j =1;j<=i;j++){ //内层控制着列
System.out.print(j+"*"+i+"="+(i*j)+"\t");
//输出语句必须在if语句前面,否则当j=4的时候不会打印,只会打印3列
if(j==4){
break;
}
}
System.out.println();
}
}
}
执行结果为:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20
1*6=6 2*6=12 3*6=18 4*6=24
1*7=7 2*7=14 3*7=21 4*7=28
1*8=8 2*8=16 3*8=24 4*8=32
1*9=9 2*9=18 3*9=27 4*9=36
Process finished with exit code 0
说明:break单层跳出,只跳出了列,行还会继续执行
多层跳出:
在循环语句左边起个名字,并加上冒号
break后面加上哪个名字,就会跳出哪个循环
public class ControlDemo3 {
public static void main(String[] args) {
xiaoli:for(int i =1;i<=9;i++){
xiaowang:for(int j =1;j<=i;j++){
System.out.print(j+"*"+i+"="+(i*j)+"\t");
if(j==4){
break xiaoli;
}
}
System.out.println();
}
}
}
执行结果为:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
Process finished with exit code 0
说明:break后加外层循环,多层跳出,外循环、内循环都结束
二、continue
1、continue: 跳出当次循环(当次和当前不是一个概念)
2、使用场景:
(1)在循环语句中
(2)离开使用场景的存在是没有意义的
例:需求:打印1-10,加入continue关键字,在打印3的时候加入
public class ControlDemo4 {
public static void main(String[] args) {
for(int i=1;i<=10;i++){
if(i==3){
continue;
}
System.out.print(i+"\t");//输出语句要放在if语句的后面,否则打印出来的还是1-10
}
}
}
执行结果为:
1 2 4 5 6 7 8 9 10
Process finished with exit code 0
在打印3的时候加入continue,则不打印3,其他都打印
三、break与continue的总结
打印1-10,当循环进行到4的时候:if(i==4){ 待加入 }
若加入break:
①当前循环结束,如果输出语句放在if语句的前面,会打印出:1,2,3,4
②当前循环结束,如果输出语句放在if语句的后面,会打印出:1,2,3
若加入continue:
①当次循环结束,如果输出语句放在if语句的前面,会打印出:1,2,3,4,5,6,7,8,9,10
②当次循环结束,如果输出语句放在if语句的后面,会打印出:1,2,4,5,6,7,8,9,10
四、return
1、return: 返回,退还
2、在main方法中使用,就相当于结束了main方法,也就是结束当前java程序
3、return的作用域
public class ControlDemo4 {
public static void main(String[] args) {
return; //注意return在方法中的位置1
for(int i=1;i<=10;i++){
System.out.println(i);
}
}
}
或者
public class ControlDemo4 {
public static void main(String[] args) {
for(int i=1;i<=10;i++){
return; //注意return在方法中的位置2
System.out.println(i);
}
}
}
或者
public class ControlDemo4 {
public static void main(String[] args) {
int a =10;
return; //注意return在方法中的位置2
System.out.println(a);
}
}
以上这种情况都会报错
==============================================================
例1:
public class ControlDemo4 {
public static void main(String[] args) {
for(int i=1;i<=10;i++){
System.out.println(i);
return; //注意return在方法中的位置
}
}
}
该代码最后输出的结果为:1
4、总结:
(1)return单独使用时,当return后面紧贴着有需要执行的语句,那么系统就会报错
(2)当return放在控制语句中,并且后面没有要执行的语句,系统不会报错,但是执行结 果会发生变化(例1)

浙公网安备 33010602011771号