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

时间:2023-02-25 14:46:06

------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 }
31
1 //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。可以使用for循环
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=1
1*2=2 2*2=4
1*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);
}
}

关于循环就这么多了