java--java语言基础(4)--黑马程序员
------Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! -------
java語言基礎(4)
主要內容:《循環結構while、do...while、for、嵌套循環、跳轉》
1 循環結構while語句的格式和基本使用
第一種循環結構:
???????? while循環:
???????? 格式:
???????? while(邏輯表達式){
?????????????????? //循環體代碼。需要重復執行的代碼
???????? }
?
???????? 說明:
???????? 1.邏輯表達式:必須返回一個boolean類型的結果;
???????? 2.如果返回true:執行循環體;
???????? 3.循環體執行完畢,回到上面的"邏輯表達式",繼續判斷;
???????? 4.如果判斷為true,仍然進入循環體,再執行一次;執行完,再回到"邏輯表達式"
???????? 5.如果"邏輯表達式"返回false,循環結束;
1 2 class Demo 3 { 4 public static void main(String[] args) 5 { 6 //無限循環(死循環) 7 /* 8 while(true){ 9 System.out.println("HelloWorld!"); 10 } 11 */ 12 /* 13 boolean flag = true; 14 while(flag){ 15 System.out.println("HelloWorld"); 16 } 17 System.out.println("程序結束!"); 18 */ 19 //1.打印10次HelloWorld 20 /* 21 boolean flag = true;//控制循環的 22 int count = 0;//計數器 23 while(flag){ 24 System.out.println("HelloWorld 計數器:" + count); 25 count++;//將計數器加1 26 //判斷是否到10 27 if(count == 10){ 28 flag = false;//喊停 29 } 30 } 311 //2.優化一下 2 3 int count = 0;//計數器 4 while(count < 10){ 5 System.out.println("HelloWorld 計數器:" + count); 6 count++;//將計數器加1 7 } 8 //3.打印1--100之間所有的整數int num = 1;while(num <= 100){//考慮,什么時候進入循環 System.out.println(num);num++;//將數字加1,變為下一個數字 } 1 //4.計算并打印1--100的累加和 2 3 int sum = 0;//存累加和的 4 int num = 1; 5 while(num <= 100){ 6 sum = sum + num;//num就代表每個數字。將每個數字都加到和中。 7 num++; 8 } 9 System.out.println("sum = " + sum); 10 //5.打印1--100的所有偶數;int num = 1;while(num <= 100){if(num % 2 == 0){System.out.println(num);}num++;}
1 //6.計算1-100所有的奇數和 2 3 int num = 1; 4 5 int sum = 0; 6 7 while(num <= 100){ 8 9 if(num % 2 != 0){//判斷是奇數 10 11 sum = sum + num;//加到和中 12 13 } 14 15 num++; 16 17 } 18 19 System.out.println("sum = " + sum); 20 21 System.out.println("程序結束!"); 22 23 } 24 25 }
2 循環結構do...while語句的格式和基本使用
/*
???????? do_while循環:
?
???????? 格式:
???????? do{
?????????????????? .....//循環語句
?
???????? }while(邏輯表達式);
?
???????? do...while和while的區別:
?
???????? 1.do...while:先無條件執行一次循環體,然后再判斷;
???????? 2.while:先判斷,再決定是否進入循環體;
1 class Demo 2 { 3 public static void main(String[] args) 4 { 5 //無限循環(死循環) 6 /* 7 do{ 8 System.out.println("HelloWorld"); 9 }while(true); 10 */ 11 //打印10次HelloWorld 12 /* 13 int count = 0; 14 do{ 15 System.out.println("HelloWorld"); 16 count ++; 17 }while(count < 10); 18 */ 19 //打印1--100的整數 20 /* 21 int num = 1; 22 do{ 23 System.out.println(num); 24 num++; 25 }while(num <= 100);//什么時候進入循環 26 */ 27 //計算1--100的累加和 28 /* 29 int num = 1; 30 int sum = 0; 31 do{ 32 sum += num; 33 num++; 34 }while(num <= 100); 35 System.out.println("sum = " + sum); 36 */ 37 38 //計算某數到100的累加和 39 40 //do...while版 41 /* 42 int num = 10000; 43 int sum = 0; 44 do{ 45 sum += num; 46 num++; 47 }while(num <= 100); 48 System.out.println("sum = " + sum); 49 */ 50 //while版 51 /* 52 int num = 100000; 53 int sum = 0; 54 while(num <= 100){ 55 sum += num; 56 num++; 57 } 58 System.out.println("sum = " + sum); 59 */ 60 61 } 62 }3 循環結構概述和for語句的格式及其使用
???????? for循環:
???????? 1.語法格式:
?????????????????? for(初始化循環變量; 邏輯表達式 ; 增量表達式 ){
??????????????????????????? //循環體
?????????????????? }
???????? ? 說明:
???????? ? 1).初始化循環變量:一般用于定義循環變量,并初始化;
???????? ? 2).邏輯表達式:產生一個true或false,以此來決定是否進入循環;
???????? ? 3).增量表達式:一般用來控制循環變量,來促使"邏輯表達式"產生一個false,用來結束循環;
???????? ?
???????? ? 以上三個表達式,都不是必須的;但是,分號一定要寫;
1 class Demo 2 3 { 4 5 public static void main(String[] args) 6 7 { 8 9 //無限循環(死循環) 10 11 /* 12 13 for(;;){ 14 15 System.out.println("HelloWorld"); 16 17 } 18 19 */ 20 21 //1.打印10次HelloWorld 22 23 /* 24 25 int count = 0;//計數器 26 27 boolean flag = true;//控制循環 28 29 for(;flag;){ 30 31 System.out.println("HelloWorld"); 32 33 count++;//計數器加1 34 35 if(count == 10){ 36 37 flag = false; 38 39 } 40 41 } 42 43 */ 44 45 //變形1: 46 47 /* 48 49 int count = 0;//計數器 50 51 for(;count < 10;){ 52 53 System.out.println("HelloWorld"); 54 55 count++;//計數器加1 56 57 } 58 59 變形2: 60 61 for(int count = 0;count < 10;count++){ 62 63 System.out.println("HelloWorld"); 64 65 } 66 67 */ 68 69 2.打印1--100的數 70 71 for(int num = 1;num <= 100;num++){ 72 73 System.out.println(num); 74 75 } 76 77 3.計算1--100所有數的累加和 78 79 int sum = 0; 80 81 for(int num = 1;num <= 100; num++){ 82 83 sum += num; 84 85 } 86 87 System.out.println("sum = " + sum); 88 89 // System.out.println("num = " + num);//編譯錯誤:num的作用域只在for內部 90 91 //注意num的作用域 92 93 int num = 1; 94 95 for(;num <= 100;num++){ 96 97 System.out.println(num); 98 99 } 100 101 System.out.println(num);//OK的 102 103 int num; 104 105 for(num = 1 ; num <= 100; num++){ 106 107 System.out.println(num); 108 109 } 110 111 System.out.println(num); 112 113 */ 114 115 /* 116 117 for(int num = 1,sum = 0 ; num <= 100;num++){//在for中定義兩個變量是可以的,但作用域都是在for內部 118 119 } 120 121 System.out.println(sum);//編譯錯誤,不能訪問sum 122 123 */ 124 125 126 127 //4.計算1--100的所有的偶數和: 128 129 /* 130 131 int sum = 0; 132 133 for(int num = 1; num<=100 ; num++){ 134 135 if(num % 2 == 0){ 136 137 sum += num; 138 139 } 140 141 } 142 143 */ 144 145 /* 146 147 int sum = 0; 148 149 for(int num = 2 ; num <= 100 ; num+=2){ 150 151 sum += num; 152 153 } 154 155 */ 156 157 // System.out.println("偶數和:" + sum); 158 159 } 160 161 }4 循環結構for語句的練習
1 /* 2 在控制臺輸出10--1 3 */ 4 class Demo1 { 5 public static void main(String[] args) { 6 for(int num = 10; num > 0 ; num--){ 7 System.out.println(num); 8 } 9 } 10 } 1 /* 2 求5的階乘: 3 1 * 2 * 3 * 4 * 5 4 */ 5 class Demo2 { 6 public static void main(String[] args) { 7 int result = 1; 8 for(int num = 1 ; num <= 5 ; num++){ 9 // result = result * num; 10 result *= num; 11 } 12 System.out.println("5的階乘為:" + result); 13 } 14 } 1 /*在控制臺輸出所有的”水仙花數” 2 1.打印出所有的三位數的水仙花數; 3 2.水仙花數:這個數的個位的立方 + 十位的立方 + 百位的立方 = 這個數 4 3.例如: 5 數字:153 6 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 = 153 7 思路: 8 1.三位數的水仙花數:所有的三位數:100 -- 999??梢允褂胒or循環 9 2.在循環內部,可以取出每個數字:例如:取出數字:100 10 3.拿到數字后,將每位的數字取出; 11 數字:153 12 個位:153 % 10 : 3 13 十位:153 / 10 % 10 : 5 14 百位:153 / 100 % 10 : 1 15 千位:數字 / 1000 % 10 16 萬位:數字 / 10000 % 10 17 4.將每位數字計算立方并相加,相加后進行判斷,如果等于這個數:就是水仙花數*/ 18 class Demo3 { 19 public static void main(String[] args) { 20 for(int num = 100 ; num <= 999 ; num++){ 21 int ge = num % 10; 22 int shi = num / 10 % 10; 23 int bai = num / 100 % 10; 24 //判斷 25 if((ge * ge * ge + shi * shi * shi + bai * bai * bai) == num){ 26 System.out.println("水仙花數:" + num); 27 } 28 } 29 } 30 } /*統計水仙花的數量:1.找水仙花;2.找到后,計數器加1;3.循環結束后,打印計數器;*/ class Demo4 {public static void main(String[] args) {int count = 0;for(int num = 100; num <= 999 ; num++){int ge = num % 10;int shi = num / 10 % 10;int bai = num / 100 % 10;if((ge * ge * ge + shi * shi * shi + bai * bai * bai) == num){count++;}}System.out.println("水仙花數的數量是:" + count);} } 1 /*請在控制臺輸出滿足如下條件的五位數 2 個位等于萬位;十位等于千位 3 個位+十位+千位+萬位=百位 4 思路: 5 1.五位數:10000 -- 99999:使用for 6 2.取出每一位; 7 3.判斷:輸出:*/ 8 class Demo5 { 9 public static void main(String[] args) { 10 for(int num = 10000; num <= 99999; num++){ 11 int ge = num % 10; 12 int shi = num / 10 % 10; 13 int bai = num / 100 % 10; 14 int qian = num / 1000 % 10; 15 int wan = num / 10000 % 10; 16 //判斷 17 if(ge == wan && shi == qian && (ge + shi + qian + wan) == bai){ 18 System.out.println("找到五位數:" + num); 19 } 20 } 21 } 22 } 1 /*請統計1-1000之間同時滿足如下條件的數據有多少個: 對3整除余2;對5整除余3;對7整除余2*/ 2 class Demo6 { 3 public static void main(String[] args) { 4 for(int num = 1 ; num <= 1000 ; num++){ 5 if(num % 3 == 2 && num % 5 == 3 && num % 7 == 2){ 6 System.out.println("找到數字:" + num); 7 } 8 } 9 } 10 }5 循環結構三種循環語句的區別
1.do...while:先進入循環一次 ,再判斷;
???????? 2.for和while都是先判斷,再決定是否進入循環體;
???????? 3.for循環:一般在明確循環的范圍,有明確的增量。常用
???????? ? while循環:不具有明確的循環范圍,也不具有明確的增量。
???????? ? do...while循環:先進入循環,后判斷。
???????? 注意事項:
???????? 1.編寫循環結構時,一定要檢查好循環結束的條件。否則就是死循環;
6 嵌套循環結構
嵌套循環:
???????? 1.每一種循環的內部都可以再嵌套其他的循環;
???????? 2.這種循環可以無限嵌套;
???????? 3.執行特點:外部循環每執行一次,內部循環都要全部的循環一次;
???????? 4.建議:只能出現兩層嵌套,如果需要第三層嵌套,就要考慮優化代碼和算法;
???????? ??????? 盡量不要出現第三層嵌套,會給調試和后期維護帶來困難;
7 循環結構循環嵌套練習
1 /*需求:請輸出一個4行5列的星星(*)圖案。 2 輸出: 3 ***** 4 ***** 5 ***** 6 ***** 7 */ 8 class Demo1{ 9 public static void main(String[] args) { 10 for(int num = 1 ; num <= 4 ; num++){//外層循環:控制"行"數據 11 for(int j = 1 ; j <= 5 ;j++){//內層循環:控制"每列"的數據 12 System.out.print("*");//橫向的輸出5個* 13 } 14 System.out.println();//輸出一個換行符 15 } 16 } 17 18 } /*需求:請輸出如下圖形*************** */ class Demo2 {public static void main(String[] args) {for(int i = 1 ;i <= 5 ;i++){for(int j = 1; j <= i ; j++){//j<=i:列數小于或等于行數的時候都可以輸出,一旦大于行數,就結束輸出;System.out.print("*");}System.out.println();//輸出一個換行 }} } /*需求:在控制臺輸出九九乘法表。1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9.....1*9=9 2*9=18 3*9=27...7*9=63 8*9=72 9*9=81思路: 1. 需要輸出9行,外層循環循環9次; 2. 內層循環,控制每列;輸出的列數等于行號為止; 3. 封裝每一列的數據:列 * 行 = 結果 */ class Demo3 {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 + "=" + (j * i) + "\t");}System.out.println();}} }8 循環結構循環跳轉語句
(1).break:可用于switch語句,表示結束switch語句;
????????????? ??????? 也可以用于"循環結構",表示"跳出循環(結束循環)"
????????????? ? 需求:
????????????????????????????????????????? 從1開始,打印10個能被5整除的數:
1 int count = 0; 2 3 int num = 1; 4 5 while(true){ 6 7 if(num % 5 == 0){ 8 9 count++; 10 11 System.out.println(num); 12 13 if(count == 10){ 14 15 //結束循環 16 17 break; 18 19 } 20 21 } 22 23 num++; 24 25 }(2).continue:
1.只用于"循環結構";2.它代表立即終止本次循環,繼續下一次循環;
? ? ? ? ? ? ? ? ? ? ? ? ??
1 for(int i = 1 ; i <=50 ;i++){ 2 3 if(i % 2 == 0){ 4 5 continue;//立即結束本次循環,繼續下一次循環 6 7 } 8 9 System.out.println(i); 10 11 }3.return:在方法那里講:它表示"結束當前的方法的執行"
? ? ? ? ? ??
1 class Demo { 2 3 public static void main(String[] args) { 4 5 //從1 開始,打印10個能被5整除的數; 6 7 int count = 0; 8 9 int num = 1; 10 11 while(true){ 12 13 if(num % 5 == 0){ 14 15 count++; 16 17 System.out.println(num); 18 19 if(count == 10){ 20 21 //結束循環 22 23 System.out.println("break之前num = " + num); 24 25 break;//立即跳出循環體,結束循環; 26 27 System.out.println("aaa");//編譯錯誤:無法訪問的語句; 28 29 } 30 31 } 32 33 num++; 34 35 } 36 37 System.out.println("程序結束! num = " + num); 38 39 System.out.println("***************************"); 40 41 //continue語句: 42 43 for(int i = 1 ; i <=50 ;i++){ 44 45 if(i % 2 == 0){ 46 47 continue;//立即結束本次循環,繼續下一次循環 48 49 // System.out.println("aa");//編譯錯誤:無法訪問的語句 50 51 } 52 53 System.out.println(i); 54 55 } 56 57 } 58 59 }? ? ?小芳存錢案例
? ? ?小芳的媽媽每天給她2.5元錢,她都會存起來,但每當這一天是存錢的第5天或者5的倍數的話,她都會花去6元錢,請問,經過多少天,小芳才可以存到100元錢。
????????????? 1.使用循環,計算總錢數;
????????????? 2.利用錢數小于100時,作為循環的條件;
????????????? 3.在外部定義一個變量,作為天數的匯總;
class Demo {public static void main(String[] args) {int days = 0;double money = 0;while(money < 100){money += 2.5;//每天存入2.5元;days++;//將天數自增1;if(days % 5 == 0){// money -= 6;}}System.out.println("經過了:" + days + " 天,小芳的錢數:" + money);} }關于循環就這么多了
? ? ? ? ? ? ?
轉載于:https://www.cnblogs.com/linmusen/p/4709226.html
總結
以上是生活随笔為你收集整理的java--java语言基础(4)--黑马程序员的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米手环4门禁卡怎么用(小米官方售后服务
- 下一篇: vs2013 无法打开 源 文件 SDK