java基础3 循环语句:While 循环语句、do while 循环语句、 for 循环语句 和 break、continue关键字

一、While循环语句

1、格式

  while(条件表达式){
    执行语句;
  }

2、要点

  1,先判断后执行
  2,循环次数不定
  3,避免死循环

3、举例

题目1:输出0-100之间的所有数

 1 class Demo3
 2 {
 3     public static void main(String[] args){
 4         //输出0-100之间的所有数
 5         int i=1;
 6         while(i<100){
 7             System.out.println(i);
 8             i++;
 9         }
10     }
11 }

题目2:猜数字游戏

 1   public static void main(String[] args) {
 2     //解析:Math.random()返回一个double类型的0.0~1.0之间的数值; Math.random()*100返回结果:0.0~100.0(不包括0.0和100.0); (int)(Math.random()*100)+1,返回结果:1~100(包括1和100)
 3       int num = (int)(Math.random()*100)+1; // 在1~100之间,生成一个随机数。 
 4       Scanner sc = new Scanner(System.in); //创建一个扫描器对象  
 5       int guessNum = -1;  // guessNum 的初始化值不能在1~100之间(包括1和100)
 6      
7
while (guessNum != num) { 8 System.out.println("请输入1-100之间整数"); 9    
10 int guessNum = sc.nextInt(); //扫描你输入的整形对象 11 if (guessNum == num) { 12 System.out.println("中啦"); 13 } else if (guessNum < num) { 14 System.out.println("小啦"); 15 } else { 16 System.out.println("大了"); 17 } 18 } 19 }

 

二、do ... while循环语句

1、格式

  do{

       执行相应的代码;

  }while(判断条件);

2、要点

  1,先执行后判断
  2,至少执行一次
  3,最后的分号勿漏

3、while循环语句和do-while循环语句的区别:

  1)while循环语句,是先判断,再执行相应代码
  2)do-while循环语句,先执行相应的代码,再判断

4、例子

 1 public static void main(String[] args) {
 2     int x = 0, y = 0;
 3     do {
 4         System.out.println(x);
 5         x++;
 6     } while (x < 0);//注意一个细节:do...while 后面的分号
 7     // do...while:不管是否满足循环条件,do都会先执行一次。
 8     while (y < 0) {
 9         System.out.println(y); //条件不满足,结果只有x的值输出
10         y++;
11     }
12 }

题目2:猜数字游戏

 1  public static void main(String[] args) {
 2           // 记录用户输入的数字
 3          int guess = -1;
 4          // 记录用户输入次数
 5          int count = 0;
 6          // 生成1-100之间随机数
 7          int num = (int) (int)(Math.random()*100)+1;// 在1~100之间,生成一个随机数。
 8        Scanner sc = new Scanner(System.in);//创建一个扫描器对象 
 9  
10          // 循环猜数字
11          do {
12                System.out.println("请输入1-100之间的数字");
13                guess = sc.nextInt();//扫描你输入的整形对象
14               if (guess > num) {
15                     System.out.println("哥们,太大了");
16               } else if (guess < num) {
17                     System.out.println("哥们,太小了");
18               } else {
19                     System.out.println("恭喜您,中啦");
20               }
21                 count++;
22          } while (guess != num); //注意一个细节:do...while 后面的分号
23          System.out.println("你猜测的数字是:" + num + "猜测了" + count + "次");
24   }

 

三、for 循环语句(和增强for循环)

1.格式

  for(初始化表达式;循环条件表达式;循环后的操作表达式){

    执行语句;

  }

2、for while的区别

while循环和for循环的对比:
  1、循环类型:
    while循环是不确定性循环(循环次数不明确)
    for循环式确定型循环(循环次数明确)
  2、相互转换:
    while循环和for循环可以相互转换
  3、适用场合:
    当循环次数确定时,一般使用for循环
    当循环次数不确定时,一般使用while循环
 1 public static void main(String[] args) {
 2     for (int x = 0; x < 5; x++) {
 3         System.out.println("hello java");
 4     }
 5     System.out.println(x); 
 6     //x cannot be resolved to a variable
 7 
 8     int y = 0;
 9     while (y < 5) {
10         System.out.println("hello world");
11         y++;
12     }
13     System.out.println(y);
14 }

解析:

x 为什么会找不到,注意了变量的作用域,也就是变量的作用范围。x 只在 for 循环的大括号内有效,出了这个区域,就无效了.在内存中就消失了。x消失后,仍要访问它,肯定会报错的。

y 就不一样了,y 是定义在while 外的。while循环完毕仍有效  while的初始化 动作在外边,循环结束后y 仍然存在。

当定义的y 只作为循环增量存在的话的,循环完毕后y就没有用了,但是y还是占着一块内存。所以,如果定义的变量只作为循环增量存在的话,就用for 循环可以节约内存。

其实for while 是可以互换的。

总结

  Afor里面的两个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。

  Bwhilefor可以互换,区别在于for为了循环而定义的变量在for循环结束时就在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。

  C、最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。推荐使用while(true)

3、举例

题目1:打印99乘法表

 1 class Demo1{
 2     
 3     public static void main(String[] args) {
 4         for (int x = 1; x <= 9; x++) {
 5             for (int y = 1; y <= x; y++) {
 6                 System.out.print(y + "*" + x + "=" + x * y + '\t');  //  \t:制表符,相当于Table键,一个\t代表四个空格  
 7             }
 8             System.out.println(" ");
 9         }
10     }
11 }

效果图:

转义字符:
\r 表示接受键盘输入,相当于按下回车。
\n 表示换行。
\t  制表符,相当于Table键(四个空格)
\b 退格键,相当于Back Space
\’  单引号
\’’ 双引号
\\ 表示一个斜跨

题目2:打印直角三角形

1 public static void main(String[] args) {
2     for (int x = 0; x < 5; x++) {
3         for (int y = 0; y <= x; y++) {
4             System.out.print("*");
5         }
6         System.out.println("");
7     }
8 
9 }

效果图

题目3:打印倒直角三角形

1 public static void main(String[] args) {
2     for (int x = 5; x > 0; x--) {
3         for(int y=x;y>0;y--){
4             System.out.print("*");
5         }
6         System.out.println("");
7     }
8 }

效果图

4、增强for循环(也叫foreach循环)

      jdk1.5出现的新功能

 1)增强for循环的作用

      简化了迭代器的书写格式(注意:增强for循环底层还是使用了迭代器遍历)

 2)增强for循环的适用范围

      如果实现了Iterable接口或者数组对象都可以使用增强for循环.

 3)增强for循环的格式

for(数据类型 变量名:遍历的目标对象名){

}

 4)增强for循环需要注意的事项

      1、增强for循环底层也是使用迭代器获取的,只不过获取迭代器是由jvm完成,不需要我们获取迭代器,索引在使用增强for循环遍历元素的过程中不准使用集合对对象对集合元素经行修改
      2、迭代器遍历元素和增强for循环的区别:使用迭代器遍历元素时可以删除集合元素,而增强for循环遍历集合元素时,不能调用迭代器里面的remove方法删除元素.
      3、普通for循环与增强for循环的区别:普通for循环可以没有变量目标,而增强for循环一定要有变量目标

 1 public class Demo2 {
 2     public static void main(String[] args) {
 3         int[] arr={12,2,5,0};
 4 
 5     //普通for循环
 6         for (int i = 0; i < arr.length; i++) {
 7             System.out.println(arr[i]);
 8         }
 9 
10     //增强for循环
11         for (int i : arr) {
12             System.out.println(i);
13         }
14     }
15 }

 

四、 breakcontinue关键字

1、break关键字:break 语句用于终止最近的封闭循环或它所在的 switch 语句。控制传递给终止语句后面的语句(如果有的话)。

适用:for循环 、 switch判断语句。

要点:
  1,结束循环之用
  2,改变循环执行次数
  3,只跳出本循环

break的用法:

  1. 单独使用。
  2. 与标签一起使用。(标签:即一个名字,满足标识符的条件即可)

使用细节: 不要再break语句之后,编写其他语句,永远都执行不到,编译报错。

 

2、continue关键字:语句将控制权传递给它所在的封闭迭代语句的下一次迭代(跳出本循环,执行下一次循环)

适用于:while do while for循环语句

要点:
  1,没有终止整个循环
  2,没有改变循环执行次数
  3,只在本层循环当中起作用

使用细节:

   1. 如果continue出现在循环的末尾(最后一条语句),那么可以省略。

   2. 如果continue出现在循环的第一条语句,那么后面的语句都无法执行,所以编译报错。

   3. 可以结合标记使用。

 3、小结:

  break: 结束了一个循环
  continue:结束了一次循环
如图所示:

 

 

 

 

 

原创作者:DSHORE

作者主页:http://www.cnblogs.com/dshore123/

原文出自:http://www.cnblogs.com/dshore123/p/8656779.html

欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

posted @ 2018-03-27 12:21  DSHORE  阅读(7881)  评论(0编辑  收藏  举报