失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java--java语言基础(4)--黑马程序员

java--java语言基础(4)--黑马程序员

时间:2024-02-15 00:38:01

相关推荐

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 { 4public 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次HelloWorld20 /*21 boolean flag = true;//控制循环的22 int count = 0;//计数器23 while(flag){24 System.out.println("HelloWorld 计数器:" + count);25 count++;//将计数器加126 //判断是否到1027 if(count == 10){28 flag = false;//喊停29 }30 }31

1 //2.优化一下2 3 int count = 0;//计数器4 while(count < 10){5 System.out.println("HelloWorld 计数器:" + count);6 count++;//将计数器加17 }8

//3.打印1--100之间所有的整数int num = 1;while(num <= 100){//考虑,什么时候进入循环 System.out.println(num);num++;//将数字加1,变为下一个数字 }

1 //4.计算并打印1--100的累加和 23 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 3int num = 1; 4 5int sum = 0; 6 7while(num <= 100){ 8 9 if(num % 2 != 0){//判断是奇数10 11 sum = sum + num;//加到和中12 13 }14 15 num++;16 17}18 19System.out.println("sum = " + sum);20 21System.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 { 3public static void main(String[] args) 4{ 5 //无限循环(死循环) 6 /* 7 do{ 8 System.out.println("HelloWorld"); 9 }while(true);10 */11 //打印10次HelloWorld12 /*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 5public static void main(String[] args) 6 7{ 8 9//无限循环(死循环) 10 11/* 12 13for(;;){ 14 15 System.out.println("HelloWorld"); 16 17} 18 19*/ 20 21//1.打印10次HelloWorld 22 23/* 24 25int count = 0;//计数器 26 27boolean flag = true;//控制循环 28 29for(;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 49int count = 0;//计数器 50 51for(;count < 10;){ 52 53 System.out.println("HelloWorld"); 54 55 count++;//计数器加1 56 57} 58 59变形2: 60 61for(int count = 0;count < 10;count++){ 62 63 System.out.println("HelloWorld"); 64 65} 66 67*/ 68 692.打印1--100的数 70 71for(int num = 1;num <= 100;num++){ 72 73 System.out.println(num); 74 75} 76 773.计算1--100所有数的累加和 78 79int sum = 0; 80 81for(int num = 1;num <= 100; num++){ 82 83 sum += num; 84 85} 86 87System.out.println("sum = " + sum); 88 89// System.out.println("num = " + num);//编译错误:num的作用域只在for内部 90 91//注意num的作用域 92 93int num = 1; 94 95for(;num <= 100;num++){ 96 97 System.out.println(num); 98 99}100 101System.out.println(num);//OK的102 103int num;104 105for(num = 1 ; num <= 100; num++){106 107 System.out.println(num);108 109}110 111System.out.println(num);112 113*/114 115/*116 117for(int num = 1,sum = 0 ; num <= 100;num++){//在for中定义两个变量是可以的,但作用域都是在for内部118 119}120 121System.out.println(sum);//编译错误,不能访问sum122 123*/124 125 126 127//4.计算1--100的所有的偶数和:128 129/*130 131int sum = 0;132 133for(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 147int sum = 0;148 149for(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 { 5public static void main(String[] args) { 6 for(int num = 10; num > 0 ; num--){ 7 System.out.println(num); 8 } 9}10 }

1 /* 2求5的阶乘: 31 * 2 * 3 * 4 * 5 4 */ 5 class Demo2 { 6public 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 /*在控制台输出所有的”水仙花数” 21.打印出所有的三位数的水仙花数; 32.水仙花数:这个数的个位的立方 + 十位的立方 + 百位的立方 = 这个数 43.例如: 5 数字:153 6 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3 = 153 7思路: 81.三位数的水仙花数:所有的三位数:100 -- 999。可以使用for循环 92.在循环内部,可以取出每个数字:例如:取出数字:100103.拿到数字后,将每位的数字取出;11 数字:15312 个位:153 % 10 : 313 十位:153 / 10 % 10 : 514 百位:153 / 100 % 10 : 115 千位:数字 / 1000 % 10 16 万位:数字 / 10000 % 10 174.将每位数字计算立方并相加,相加后进行判断,如果等于这个数:就是水仙花数*/18 class Demo3 {19public 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思路: 51.五位数:10000 -- 99999:使用for 62.取出每一位; 73.判断:输出:*/ 8 class Demo5 { 9public 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) { 4for(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) {10for(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 17break;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 3public 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 17System.out.println(num);18 19 if(count == 10){20 21 //结束循环22 23 System.out.println("break之前num = " + num);24 25 break;//立即跳出循环体,结束循环;26 27System.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);}}

关于循环就这么多了

如果觉得《java--java语言基础(4)--黑马程序员》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。