跳轉控制語句(break、continue、return)
阿新 • • 發佈:2021-12-01
跳轉控制語句(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)