国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

unit7 程序控制結構

2019-11-08 01:41:30
字體:
來源:轉載
供稿:網友

unit7 程序控制結構

1. 程序邏輯

2. 選擇結構

3. 循環結構

4. 循環的跳轉

 

1        程序邏輯

1.1        順序結構

如同閱讀文章一樣,從入口到出口一條龍執行完畢,如之前購物小票打印便是順序結構。

1.2        分支結構

通過條件判斷,選擇性執行代碼塊。

1.3        循環結構

通過對給定條件的判斷,完成代碼的重復執行。

2        選擇結構

2.1        if語句

單條件判斷,格式

if(條件){

       執行的代碼

}

條件的數據類型為boolean,可以是返回結果為boolean類型的方法,也可以是true、false常量、關系運算符、boolean類型的變量。當條件為true的時候,條件成立,執行后面的代碼塊,不成立為false,則不執行。

       //if:單條件判斷,總價超過1000,打8折

       double total = 1000;

       if (total > 1000){

           total *=0.8;

       }

2.2        if……else語句

互斥條件判斷

 

 

       //if else,條件判斷,總價超過1000,打8折,否則打9折       double total = 1001;       if (total > 1000){           total *=0.8;       }else {           total *=0.9;}

2.3        if……else if……else語句

多條件判斷,可以在多個if條件中選擇滿足條件的代碼塊執行,不滿足執行else體的代碼。

       double total = 1000;       if (total > 1000){           total *=0.8;       }else if(total >500){           total *=0.9;       }else{               //else可寫可不寫,如果不寫,則當不滿足if條件直接跳過執行下面的語句           total *=0.95;}

2.4        多重選擇---switch語句

在現實業務中,許多場景需要我們從多個固定的值中選出一個進行操作。比如登錄系統,選擇身份:老板或者收銀員,進入的系統也就不一樣。

Switch語句可以根據一個變量值,對比多個可選值,當變量值匹配到可選值以后,執行該值對應的代碼塊。

        

                 //switch:多重選擇       int choose = 1;//1代表老板,2代表收銀員       switch (choose) {       case 1:       //代表某一情況的值,當choose==1時,則執行該段代碼塊           System.out.PRintln("boss");           break;       case 2:           System.out.println("cashier");           break;        default:   //當以上值都沒匹配到時,執行該段代碼,可寫可不寫           System.out.println("enter error");           break;       }

3        循環結構

3.1        while循環

有時候需要根據給定的條件循環執行代碼,這個時候使用while循環完成任務,while后面括號里的表達式為布爾類型,true執行循環代碼,false退出循環,執行時,先判斷是否滿足條件,滿足,值為true則執行,不滿足就退出循環。

  

         //while循環           int num1 = 0;           while (num1 <= 10){  //只要num1滿足小于等于10,代碼就會一直執行下去,括號中的數據類型為布爾類型,為true時,執行循環代碼,flase結束循環           System.out.print(++num1+"、");       }

3.2        do……while循環

和while語句區別在于:while先判斷條件是否成立,再去執行,do……while是先執行代碼,再判斷條件是否成立。

 

             //do……while,先執行,后判斷              do {              System.out.println("先執行代碼");       } while (1>2);

3.3        for循環

循環,當需要對代碼循環條件為計次循環的時候,可以使用for循環。

a)    for循環語句使用格式

l 循環的重要組成部分

a)      循環變量初始化 (初始化表達式)

b)      循環出口(布爾表達式)

c)       循環增量(步進表達式)

d)      循環邏輯內容(循環體)

 

l for循環格式

for(初始化表達式①;布爾表達式②;步進表達式④){

                 循環體③

}

執行順序: ①②③④>②③④>②③④… ②不滿足為止。

①負責完成循環變量初始化

②負責判斷是否滿足循環條件,不滿足則跳出循環

③具體執行的語句

④循環后,循環條件所涉及變量的變化情況

b)   for循環注意事項

a)①②③④四個部分均可以為空

當①為空時,注意變量作用域的范圍變化

當②為空時,為條件永遠為true的死循環

當③為空時,通常沒有意義

當④為空時,可以將其加入到循環體中,或同樣成為死循環

b)      初始化表達式①的部分可以同時定義多個變量

步進表達式可以同時將多個循環相關變量改變,控制循環條件

   

      

//for循環打印從0到99數字       for (int i = 0; i <= 99;i++) {           System.out.print(i + " 、");       }

3.4        foreach循環

遍歷循環,類似jquery中$.each()方法對元素的遍歷操作。Foreach可以快速的對數組、集合的成員進行一次遍歷操作。

    

          //foreach遍歷操作              int[] arr = {1,2,3,4,5};              for (int i : arr) {         //i:每次循環時候,對應數組中的一個int類型數據,arr:數組,暫時理解為一個容器,里面放的全都是int類型數據              System.out.println(i);       }

3.5        循環嵌套

很多時候,一個循環是無法滿足我們的業務需要,可能會用到循環中嵌套循環,就像if和else if那樣,語句中還可以有if語句。

這里以99乘法表作為案例:

   

    //使用for循環打印99乘法口決表       for (int i = 1; i < 10;i++) {           for (int j = 1; j <= i;j++) {              System.out.print(j + " * " + i + " = " + j * i+"/t");           }           System.out.println();       }       System.out.println();       //使用while打印99乘法口決表       int x = 1;       while (x<=9) {           int y = 1;           while (y<=x) {              System.out.print(y+ " * " + x + " = " +x*y+"/t");              y++;           }           x++;           System.out.println();       }    }

4        循環的跳轉

java提供continue、break、return關鍵字實現對循環的控制、結束功能。

4.1        break語句

結束循環,使用break強行終止循環,而不是當循環的條件不滿足的時候才結束,一旦遇到break,系統就會結束當前循環,執行循環外的代碼。

   

        //循環的跳轉       //break:結束當前所在的循環,無論哪種       int num2 = 1;       while (num2<10){           if (num2>3) {              System.out.println("強行結束循環!");              break;           }           System.out.println("打印:" + num2);           num2++;       }       for (int i = 0; i < 10;i++) {           System.out.println("打印:" + i);           if (i>3) {              System.out.println("打印結束!");//注意,當使用break結束循環,那么break后不能再有任何代碼,因為那是無法被執行到的!              break;           }       }       //但是break只會結束當前所在的循環,如果是雙層嵌套循環,是無法結束外層循環。       for (int i = 0; i < 10;i++) {           for (int j = 0; j < 10; j++) {              System.out.println("內層循環打印了j:" + j);              if (j == 3) {                  System.out.println("這里已經結束了內層循環,但是外層循環還是會繼續!");                  break;              }           }           System.out.println("外層循環打印i:" + i);       }

continue語句

       continue 的功能和break有點類似,區別是continue只是忽略了本次循環剩下的代碼,接著開始下一次循環,并不會終止循環,而break是完全終止循環本身。

 

             //continue:忽略本次循環剩下的代碼           for (int i = 0; i < 5; i++) {           if (i == 2) {              System.out.println("這里忽略了剩下的代碼,所以你看不到這是第幾次循環");//記住,這里和break一樣,不能在continue所在代碼塊中后面繼續寫代碼。              continue;           }           System.out.println("這是第" + i + "次打印!");       }

 

4.2        return語句

return本身并不是用來控制循環的,而是結束所在的方法,后面可跟上數據、變量、常量和表達式返回給調用者,在這里可以起到結束方法作用,當使用return時,無論多少循環嵌套,都會被直接結束!

 

 

5        練習:

1、99乘法表打印(使用for和while循環打印)

1、 效果是打印9行,9列,也就是說是一個雙層for循環,判斷的條件是列數和行數都小于9。

2、 定義兩層for循環,外層循環打印行,內層循環打印列。

3、 依據的條件是:內層循環打印的列數不能大于當前外層打印的行數

for(int i = 1; i <=9 ;i++){               for(int j = 1; j<= i ;j++){                      System.out.print(j + "*" +i + "=" + i * j +"/t" );        }        System.out.println();        }

2、再看while循環打印99乘法表

  intx = 1;       while(x<=9){              intj = 1;              while(j<=x){                     System.out.print(j + "*" +x + "=" + x * j +"/t" );                     j++;       }              System.out.println();              x++;       }

              2、水仙花數:一個三位數,每位數字的3次方相加等于該數本身。

              思路:循環遍歷所有的三位數,然后判斷條件是否成立。

            

     for(int i = 100 ; i < 1000 ;i++){                     int bai =i / 100;                     int shi =i % 100 / 10 ;                     int ge = i% 10 ;                     if(bai * bai * bai + shi * shi * shi + ge * ge *ge == i){                            System.out.println(i + "是一個水仙花數!");                     }                          }

              3、母雞3元,公雞4元,小雞0.5元,100元買100只雞

                     思路:三層for循環,依次把每一種可能性遍歷出來,然后判斷條件是否成立,就OK!

                            條件:買的雞一共數量=100,并且花了100塊錢。

       int temp = 0;              for(  int muji = 1;muji<=98 ;muji++){                     for(intgongji  = 1; gongji<=98 ; gongji++){                            for(intxiaoji  = 1;xiaoji <=98 ;xiaoji++){                                   if((muji+ gongji +xiaoji == 100) && (muji *3 +gongji*4 +xiaoji *0.5 ==100)){                                          System.out.println("母雞買了"+muji+"只,戰斗雞買了"+gongji+"只,小雞買了"+xiaoji+"只");                                                                            }                                                 temp++;                            }                     }              }

       4、求101~200素數,除了1和他本身外不能被任何數整除。

       思路:循環遍歷101~200之間的數,內層一個循環遍歷1~該數之間的數,依次對內層循環遍歷的數取余,如果出現i%j==0的情況,就說明該數不是素數!

         for(int i=102;i<200;i++){                     booleanboo = true;                            for(intj = 2; j<i; j++){                                   if(i%j==0){                                          boo=false;                                   }                            }                            if(boo){                            System.out.println(i+"素數");                            }                     }

下面是我練習的代碼:

package day07;public class Program {	public static void main(String[] args) {		//if:單條件判斷,總價超過1000,打8折,否則打9折		double total = 1000;		if (total > 1000) {			total *= 0.8;		}else if(total >500){			total *= 0.9;		}else{					//else可寫可不寫,如果不寫,則當不滿足if條件直接跳過執行下面的語句			total *= 0.95;		}		//switch:多重選擇		int choose = 1;//1代表老板,2代表收銀員		switch (choose) {		case 1:		//代表某一情況的值,當choose==1時,則執行該段代碼塊			System.out.println("boss");			break;		case 2:			System.out.println("cashier");			break;		default:	//當以上值都沒匹配到時,執行該段代碼,可寫可不寫			System.out.println("enter error");			break;		}		//while循環		int num1 = 0;		while (num1 <= 10){	//只要num1滿足小于等于10,代碼就會一直執行下去,括號中的數據類型為布爾類型,為true時,執行循環代碼,flase結束循環			System.out.print(++num1+"、");		}		System.out.println();		//do……while,先執行,后判斷		do {			System.out.println("先執行代碼");		} while (1>2);		//for循環打印從0到99數字		for (int i = 0; i <= 99; i++) {			System.out.print(i + " 、");		}		//foreach遍歷操作		int[] arr = {1,2,3,4,5};		for (int i : arr) {			//i:每次循環時候,對應數組中的一個int類型數據,arr:數組,暫時理解為一個容器,里面放的全都是int類型數據			System.out.println(i);		}		//使用for循環打印99乘法口決表		for (int i = 1; i < 10; i++) {			for (int j = 1; j <= i; j++) {				System.out.print(j + " * " + i + " = " + j * i+"/t");			}			System.out.println();		}		System.out.println();		//使用while打印99乘法口決表		int x = 1;		while (x<=9) {			int y = 1;			while (y<=x) {				System.out.print(y+ " * " + x + " = " +x*y+"/t");				y++;			}			x++;			System.out.println();		}		//循環的跳轉		//break:結束當前所在的循環,無論哪種		int num2 = 1;		while (num2<10){			if (num2>3) {				System.out.println("強行結束循環!");				break;			}			System.out.println("打印:" + num2);			num2++;		}		for (int i = 0; i < 10; i++) {			System.out.println("打印:" + i);			if (i>3) {				System.out.println("打印結束!");//注意,當使用break結束循環,那么break后不能再有任何代碼,因為那是無法被執行到的!				break;			}		}		//但是break只會結束當前所在的循環,如果是雙層嵌套循環,是無法結束外層循環。		for (int i = 0; i < 10; i++) {			for (int j = 0; j < 10; j++) {				System.out.println("內層循環打印了j:" + j);				if (j == 3) {					System.out.println("這里已經結束了內層循環,但是外層循環還是會繼續!");					break;				}			}			System.out.println("外層循環打印i:" + i);		}		//continue:忽略本次循環剩下的代碼		for (int i = 0; i < 5; i++) {			if (i == 2) {				System.out.println("這里忽略了剩下的代碼,所以你看不到這是第幾次循環");//記住,這里和break一樣,不能在continue所在代碼塊中后面繼續寫代碼。				continue;			}			System.out.println("這是第" + i + "次打印!");		}		/*母雞3元,公雞4元,小雞0.5元,100元買100只雞,成立的條件就是三者總數相加等于100,總價等于100		 * 條件為:muji + gongji + xiaoji == 100 && muji * 3 +gongji * 4 + xiaoji * 0.5 ==100		 * 思路:三層for循環,直到滿足條件		*/		for (int muji = 1; muji < 98; muji++) {			for (int gongji = 1; gongji < 98; gongji++) {				for (int xiaoji = 1; xiaoji < 98; xiaoji++) {					if (muji + gongji + xiaoji == 100 && muji * 3 +gongji * 4 + xiaoji * 0.5 ==100) {						System.out.println("購買方案為:母雞:" + muji + "只,"+"公雞:" + gongji + "只,"+"小雞:" + xiaoji + "只");					}				}			}		}	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郯城县| 潢川县| 合川市| 永济市| 邯郸市| 扬州市| 云林县| 镇沅| 曲周县| 乌拉特前旗| 义马市| 佛山市| 乌兰浩特市| 仁化县| 横峰县| 阳城县| 古浪县| 尖扎县| 贺州市| 北碚区| 建湖县| 微博| 廊坊市| 和田市| 伊川县| 牟定县| 繁峙县| 汝州市| 苏州市| 嘉兴市| 安图县| 镇江市| 武邑县| 西宁市| 电白县| 辛集市| 长泰县| 资源县| 天水市| 会昌县| 麻栗坡县|