Java流程控制語句總結

流程控制語句

1)順序結構 從上往下,依次執行

2)選擇結構 按照不同的選擇,執行不同的代碼

3)循環結構 做一些重複的代碼

1.1)順序結構案例:

分析思路:

要完成兩個變量值的交換,我們需要藉助一個第三方的變量來暫存其中的一個變量的值,然後將數據已被暫存的變量的值改變,最後將另一個變量的值使用暫存的數據改變。

編寫步驟,依次完成:

①聲明第三方變量,假設爲z

②將x的值賦給z,完成對x所代表的數據的暫時存儲

③將y的值賦給x,完成對x的交換過程

④將z中暫存的x的原值賦給y,完成對y進行的交換過程

程序實現:

int x = 10, y = 20; 
int z;
z = x; 
x = y;
 y = z;
 System.out.println("交換後:x=" + x + ",y=" + y);
 System.out.println("結論:順序流程要分清語句執行的先後次序");

2)選擇結構

選擇結構if

2.1)if語句

三種格式

A:格式1

if(比較表達式) {

語句體;

}

執行流程:

判斷比較表達式的值,看是true還是false

如果是true,就執行語句體

如果是false,就不執行語句體

B:格式2

if(比較表達式) {

語句體1;

}else {

語句體2;

}

執行流程:

判斷比較表達式的值,看是true還是false

如果是true,就執行語句體1

如果是false,就執行語句體2

C:格式3

if(比較表達式1) {

語句體1;

}else if(比較表達式2){

語句體2;

}

...

else {

語句體n+1;

}

執行流程:

判斷比較表達式1的值,看是true還是false

如果是true,就執行語句體1

如果是false,就繼續判斷比較表達式2的值,看是true還是false

如果是true,就執行語句體2

如果是false,就繼續判斷比較表達式3的值,看是true還是false

...

如果都不滿足,就執行語句體n+1

2.2)if選擇案例:

import java.util.Scanner;
public class JavaTest{
   public static void main(String[] args){
   Scanner scanner = new Scanner(System.in);
   System.out.println("請輸入要查詢的分數:");
   //考慮了分數還可能有小數
   double score = scanner.nextDouble();
  if(score >= 90)
      System.out.println("您查詢的成績爲優秀等級");
  else if (score >=80 && score <90)
      System.out.println("您查詢的成績爲優良等級");
  else if(score >=70 && score <80)
      System.out.println("您查詢的成績爲良好等級");
  else if (score >=60 && score<70)
  System.out.println("您查詢的成績爲及格等級");
  else
  System.out.println("您查詢的成績不及格");
}
}

2.3)注意事項

A:比較表達式無論簡單還是複雜,結果是boolean類型

B:if語句控制的語句體如果是一條語句,是可以省略大括號的;如果是多條,不能省略。

建議:永遠不要省略。

C:一般來說,有左大括號,就沒有分號,有分號,就沒有左大括號。

D:else後面如果沒有if,是不會出現比較表達式的。

E:三種if語句其實都是一個語句,只要有一個執行,其他的就不再執行。

2.4)三元運算符和if語句第二種格式的關係

所有的三元運算符能夠實現的,if語句的第二種格式都能實現。反之不成立。

選擇結構switch語句

1.1)格式:

switch(表達式) {

case 值1:

語句體1;

break;

case 值2:

語句體2;

break;

...

default:

語句體n+1;

break;

}

格式解釋說明:

switch:說明這是switch語句。

表達式:可以是byte,short,int,char

JDK5以後可以是枚舉

JDK7以後可以是字符串

case:後面的值就是要和表達式進行比較的值

break:表示程序到這裏中斷,跳出switch語句

default:如果所有的情況都不匹配,就執行這裏,相當於if語句中的else

1.2)執行流程:

A:首先計算表達式的值

B:和每一個case進行匹配,如果有就執行對應的語句體,看到break就結束。

C:如果沒有匹配,就執行default的語句體n+1

1.3)switch案例:

A:鍵盤錄入一個數字(1-7),輸出對應的星期幾。

import java.util.Scanner;
public class Week{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入您要查詢的星期數:");
int week = scanner.nextInt();
switch(week) {
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("請輸入1-7有效的Week數目");
break;
}
}
}

1.4)注意事項:

A:case後面只能是常量,不能是變量,而且,多個case後面的值不能出現相同的

B:default可以省略嗎?

可以省略,但是不建議,因爲它的作用是對不正確的情況給出提示。

特殊情況:

case就可以把值固定。

A,B,C,D

C:break可以省略嗎?

可以省略,但是結果可能不是我們想要的。

會出現一個現象:case穿透。

最終我們建議不要省略

D:default一定要在最後嗎?

不是,可以在任意位置。但是建議在最後。

E:switch語句的結束條件

a:遇到break就結束了

b:執行到末尾就結束了

1.5)if語句和switch語句各自的場景

A:if

針對boolean類型的判斷

針對一個範圍的判斷

針對幾個常量的判斷

B:switch

針對幾個常量的判斷

3、循環語句:

3.1)有三種:for,while,do...while

3.1.1)for循環語句

A:格式

for(初始化語句;判斷條件語句;控制條件語句){

循環體語句;

}

3.1.2)執行流程:

a:執行初始化語句

b:執行判斷條件語句

如果這裏是true,就繼續

如果這裏是false,循環就結束

c:執行循環體語句

d:執行控制條件語句

e:回到b

3.1.3)注意事項

a:判斷條件語句無論簡單還是複雜,結果是boolean類型

b:循環體語句如果是一條,可以省略大括號,但是不建議

c:有分號就沒有左大括號,有左大括號就沒有分號

3.1.4)案例

求1-100的和,求1-100的偶數和,求1-100的奇數和

class  QiuHe{
public static void main(String[] args) 
{
//求1-100之間偶數和
int sum2 = 0;
for (int x = 1;x <= 100 ; x++ ){
if (x%2 == 0)
sum2 += x;
}
System.out.println("1-100的偶數和是"+ sum2);
System.out.println("----------------------");
int sum3 = 0;
for (int x = 0; x<=100 ;x+=2 )
{
sum3 += x;
}
System.out.println("1-100的偶數和是"+ sum3);
}
}

3.2)while循環

3.2.1)基本格式

while(判斷條件語句) {

循環體語句;

}

擴展格式:

初始化語句;

while(判斷條件語句){

循環體語句;

控制條件語句;

}

3.2.2)for和while的區別

a:使用上的區別

for語句的那個控制條件變量,在循環結束後不能在使用了。

而while的可以繼續使用。

b:理解上的區別

for適合於一個範圍的判斷

while適合次數不明確的

舉例:吃葡萄

3.2.3)案例珠穆朗瑪峯問題

class  JavaTest1{
	public static void main(String[] args) {
    int count = 0;
	int end = 884800;
	int start = 1;
	while (start < end)
	{
		//只要每次變化的厚度沒有超過珠穆朗瑪峯高度,就摺疊,統計變量++
		count++;
		//摺疊一次有什麼變化呢?厚度是原來的二倍
		start *=2;
	}
	System.out.println(count);
	}
}

3.3)do...while循環

3.3.1)基本格式

do {

循環體語句;

}while(判斷條件語句);

擴展格式:

初始化語句;

do {

循環體語句;

控制條件語句;

}while(判斷條件語句);

通過查看格式,我們就可以看出其實三種循環的格式可以是統一的。

3.3.2)三種循環的區別

a:do...while循環至少執行一次循環體

b:for和while必須先判斷條件是否是true,然後後才能決定是否執行循環體

3.3.3)循環使用的注意事項(死循環)

A:一定要注意修改控制條件,否則容易出現死循環。

B:最簡單的死循環格式

a:while(true){...}

b:for(;;){}

4、控制跳轉語句

4.1)break:中斷的意思

A:用在循環和switch語句中,離開此應用場景無意義。

B:作用

a:跳出單層循環

//控制跳轉語句

//break:中斷 continue:繼續 return:返回

//break:中斷的意思,使用場景

//A:switch 語句中 B:循環語句中(循環語句中加入了if判斷的情況) 

//離開上面兩個場景,無意義。

class  JavaTest1{
public static void main(String[] args) {  
   for (int x=0;x<10 ;x++ )
  {
  if(x == 2){
   //作用:跳出單層循環
  break;
  }
System.out.println("break");  
  }
System.out.println("break1");
}
}

b:跳出多層循環,需要標籤語句的配合

4.2)continue:繼續

A:用在循環中,離開此應用場景無意義。

B:作用

a:跳出單層循環的一次,可以繼續下一次

class  JavaTest1{
public static void main(String[] args) {  
   for (int x=0;x<10 ;x++ )
  {
  if(x == 2){
   //作用:跳出單層循環
  continue;
  }
System.out.println(x);  
  }
System.out.println("continue");
}
}

4.3)return:返回

A:用於結束方法的,後面還會在繼續講解和使用。

B:一旦遇到return,程序就不會在繼續往後執行。

class  JavaTest1{
public static void main(String[] args) {  
   for (int x=0;x<10 ;x++ )
  {
  if(x == 2){
  //不在執行reture
  return;
  }
System.out.println(x);  
  }
System.out.println("return");
}
}









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章