1. 程式人生 > 其它 >Java基礎語法02——流程控制

Java基礎語法02——流程控制

Java基礎語法02——流程控制

流程控制:順序結構、分支結構(if-else、switch-case)、迴圈結構(for、while、do-while)

  • 實現從鍵盤獲取不同型別的變數——Scanner類

    步驟:

    1. 導包:import java.util.Scanner;

    2. Scanner例項化:Scanner scan = new Scanner(System.in);

    3. 呼叫Scanner的相關方法,來獲取指定型別的變數:格式:Scanner.方法

      String型別——next()

      int型別——nextInt()

      double型別——nextDouble()

分支結構1——if-else結構

三種形式:

  1. /*
    if(條件表示式){
    	執行語句;
    }
    */
    
  2. /*
    if(條件表示式){
    	執行語句1;
    }else{
    	執行語句2;
    }
    */
    
  3. /*
    if(條件表示式1){
    	執行語句1;
    }else if(條件表示式2){
    	執行語句2;
    }else if (條件表示式3){
    	執行語句3;
    }
    ````````
    else{
    	執行語句n;
    }
    */
    

if-else結構可以相互巢狀

【一旦滿足,就會退出結構】

只有一個執行語句時,{}可以省略,但不建議省,容易出錯

——>拓展:如何獲取一個隨機數?[a,b]

​ 使用Math類下的random方法,產生的是double型別的資料,且範圍為[0.0,1.0)

​ 公式:int m = (int)Math.random()*(a-b+1)+a;

分支結構2——switch-case結構

switch-case結構格式:

/*
switch(表示式)//不是條件表示式
	case 常量1:
		執行語句1;
		break;//非必須
	case 常量2:
		執行語句2;
		break;//非必須
	······
	default:
		執行語句;
*/
  1. 過程:將switch表示式的值與case常量的值匹配,匹配成功,執行相應case下的語句;執行後繼續向下執行case其他執行語句,直至遇到break關鍵字或結構末尾結束。
  2. break關鍵字:可用在switch-case結構中,(可選的)遇到此關鍵字,跳出結構
  3. switch後表示式只能是如下六種型別:byte、short、int、char、列舉型別(JDK5.0新增)、String型別(JDK7.0新增)
  4. default:可選的,位置靈活的

迴圈結構1——for迴圈

  • 迴圈結構的四個部分:初始部分、迴圈條件部分、迴圈體部分、迭代條件部分

  • for迴圈的結構:

    /*
    for(初始;迴圈條件;迭代){
    	迴圈體
    }
    //()裡每一部分可以有多條語句
    //執行過程:初始——迴圈條件(結果為boolean型別)——(true)迴圈體——迭代——迴圈條件判斷——迴圈體——迭代——······
    */
    
    //舉例:輸出5條HelloWorld語句
    public class Demo{
        public static void main(String[] args){
            for(int i=1;i<=5;i++){
                System.out.println("HelloWorld");
            }
        }
    }
    
  • break關鍵字的使用:遇到break,迴圈結束;跳出迴圈結構

迴圈結構2——while迴圈

while迴圈的結構

/*
初始
while(迴圈條件){
	迴圈體;
	迭代條件;//小心不要忘記,否則容易死迴圈
}
//執行過程:初始——迴圈條件(結果為boolean型別)——(true)迴圈體——迭代——迴圈條件判斷——迴圈體——迭代——······
*/

迴圈結構3——do-while迴圈

do-while迴圈結構:

/*
初始
do{
	迴圈體;
	迭代條件;
}while(迴圈條件)
//執行過程略有不同:初始——迴圈體——迭代——迴圈條件——迴圈體——迭代——迴圈條件——······

//注意:do-while迴圈的迴圈體至少執行一次
*/

開發中使用前兩種迴圈的情況比較多

——>拓展:最簡單“無限迴圈格式”:while(true)for(;;) ——不知道迴圈次數是多少——可以通過break結束迴圈。

例題:從鍵盤輸入多個不確定的整數,並輸出正數和負數的個數,輸入0時結束迴圈##

import java.util.Scanner;
public class Test1{
public static void main(String[] args){
	Scanner scan = new Scanner(System.in);
	int postivenumber = 0;
	int negtivenumber = 0;
	while(true){
		int num = scan.nextInt();
		if(num>0){
			postivenumber++;
		}else if(num<0){
			negtivenumber++;
		}else{
			break;
		}
	}
	System.out.println(postivenumber);
	System.out.println(negtivenumber);
}
}

巢狀迴圈

  • 層數不會太多,一般不會超過三層

  • 將一個迴圈結構A宣告在另一個迴圈結構B的迴圈體中,就構成了巢狀迴圈

  • 外層迴圈:B;內層迴圈:A

  • 說明:

    1. 內層迴圈執行一遍,相當於外層迴圈執行一次
    2. 假設外層迴圈需要執行m次,內層迴圈需要執行n次。此時,內層迴圈的迴圈體一共執行了m*n次
    3. 技巧:外層迴圈控制行數,內層控制列數
//應用1:九九乘法表
public class Test1{
public static void main(String[] args){
	for(int i=1;i<=9;i++){
		for(int j=1;j<=i;j++){
			System.out.print(i+"*"+j+"="+i*j+" ");
		}
		System.out.println();
	}
}
}
/*應用2:輸出100以內的質數(常見筆試題)
質數:(素數)只能被1和它本身整除的自然數【最小的質數2】
——2~這個數-1 都不能被這個數整除
*/
public class Test2{
public static void main(String[] args){
	boolean b = true;//標識i是否被j除盡,一旦除盡,立刻更改其值
	for(int i=2;i<=100;i++){
		for(int j=2;j<=Math.sqrt(i);j++){//優化二:將j<i-1改成小於根號i
			if(i%j==0){
				b=false;
				break;//優化一:對本身是非質數的自然數的處理,只要有除盡的 就不是質數了
			}
		}
		if(b==true){
			System.out.println(i);
		}
		b=true;//重置b變數
	}
}
}

break、continue關鍵字的使用

使用範圍 迴圈中使用的作用 相同點
break 迴圈結構 結束當迴圈 關鍵字後面不能宣告執行語句
continue 迴圈結構 結束當迴圈 關鍵字後面不能宣告執行語句
//說明1
public class Test3{
public static void main(String[] args){
	for(int i=1;i<=10;i++){
		if(i%4==0){
			//break;//輸出:1 2 3
			continue;//輸出:1 2 3 5 6 7 9 10
		}
		System.out.print(i+" ");
	}
}
}
//說明2:在巢狀迴圈中,break(continue)作用於離關鍵字最近的一層迴圈;
//如果想要指定對某一層迴圈起作用,可以使用標籤,例子如下:
public class Test1{
public static void main(String[] args){
	label:for(int i=1;i<=4;i++){
		for(int j=1;j<=10;j++){
			if(j%4==0){
				break label;
				//continue;
			}
			System.out.print(j+" ");
		}
		System.out.println();
	}
}
}//輸出結果:1 2 3