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         }
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);
    }
}

关于循环就这么多了

时间: 2024-10-03 00:36:18

java--java语言基础(4)--黑马程序员的相关文章

java--学习java从这里开始:Java语言基础(1)《基础知识篇》--黑马程序员

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Java语言基础(1) 从这篇日记开始说一些关于java的语言基础知识, 1  Java语言概述 java的创始人——詹姆斯·高斯林(James Gosling) 1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,设计IBM第7一代工作站NeWS系统,但不受重视.后来转至Sun公司,1990年,与Patrick,Na

黑马程序员——Java基础---IO(下)

黑马程序员——Java基础---IO(下) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供了File类.properties类.打印流.序列流等和输入输出相关的类,它们能够帮助我们更好的处理信息.下面将对它们进行简单的介绍. 一.正

黑马程序员——Java I/O流基础知识点(File类)

File工具 File类就是用俩将文件或者文件夹封装对象,弥补流对象的不足--流只能操作数据,不能操作文件夹的 封装的是路径!!! 构造方法演示 1.可以将已有的未出现的文件或者文件夹封装成对象. File f1=new File("c:\\abc\\a.txt"): File f2=new File("d:\\abc","ab.txt"打印,会打印路径.:目录分隔符,为了更好地跨平台File. File类常见功能 1,创建 createNewF

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

黑马程序员——Java I/O基础知识之I/O流

I/O流基础知识--字节流和字符流 文件存储在硬盘中,是以二进制表示的,只有内存中才能形成字符.数据的来源可以有硬盘,内存,控制台,网络,Java把数据从一个地方转到另一个地方的现象称为流,用InputStream和OutputStream接口来表示,这两个流里面的都是以字节为单位的,后来加入了Reader和Writer,里面操作的是字符,是两个字节为单位的. 字节流 字节流将数据写入文件 try { File file =new File("d:" +File .separator+

黑马程序员——java基础——多线程

 黑马程序员--java基础--多线程 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元.线程在控制着进程的执行.一个进程中至少有一个线程. 一个进程至少有一个线程在运行,当一个进程中出现多个线程时,就称这个应用程序是多线程应用程序,每个线程在栈区中都有自己的执行空间,自己的方法区.自己的变量.

黑马程序员——java基础---IO(input output)流字符流

黑马程序员——java基础---IO(input output)流字符流 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- io(input output)流特点: 1,io流用来处理数据之间的传输 2,java对数据的操作是通过流的方式: 3,java用于操作流的对象都在io包中: 4,流按操作数据分为两种:字节流和字符流: 5,流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象

黑马程序员——java基础——反射

 黑马程序员--java基础--反射 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 反射 其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员. 反射就是把Java类中的各种成分映射成相应的java类. 简单说:反射技术可以对一个类进行解剖. 反射的基石-->Class类 1.java中的类是用来描述一类事物的共性,该类事物有什么属性,没有什么属性

黑马程序员——Java集合基础知识之Map

Map概念 要同时存储两个元素Key和Value,他们之间有映射关系,每个键不能重复,每个键只能映射到一个值. 当数据之间存在映射关系的时候,考虑使用Map集合. Map常用方法 如果添加的键原来有值,后添加的值会覆盖前面的值,并返回之前的值.put会返回来先添加的值,后添加的值会覆盖原有的值. Map tm =new TreeMap(); tm.put (key, value);//MAP没有add tm.remove (key) ;//去除一个key和对应的value,若不存在key返回nu

黑马程序员——java基础——内部类

 黑马程序员--java基础--内部类 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 内部类 如果A类需要直接访问B类中的成员,而B类又需要建立A类的对象.这时,为了方便设计和访问,直接将A类定义在B类中.就可以了.A类就称为内部类.内部类可以直接访问外部类中的成员.而外部类想要访问内部类,必须要建立内部类的对象. 内部类的访问规则 1,内部类可以直接访问外部类中的成员,包括私有. 之所以可以直接访问外部类中的成员,是因为内部类中持有