JAVA循环语句

一、循环语句

循环:反复多次执行一段相同或想似的代码

循环三要素:

        -循环变量的初始化
        -循环的条件(以循环变量为基础)
        -循环变量的改变

二、while循环结构

while结构:先判断后执行,有可能一次都不执行

1)语法:
  while(boolean){
    语句块/循环体------------反复执行的代码
  }
2)执行过程:
    先判断boolean的值,若为true则执行语句块,
    再判断boolean的值,若为true则再执行语句块,
    再判断boolean的值,若为true则再执行语句块,
    如此反复,直到boolean的值为false时,while循环结束


//1)输出5次"行动是成功的阶梯":
int times = 0;  //1)循环变量的初始化
while(times<5){ //2)循环的条件
    System.out.println("行动是成功的阶梯");
    times++;    //3)循环变量的改变
}
System.out.println("继续执行...");
/*
 执行过程:------带数
              times=0
   true  输出  times=1
   true  输出  times=2
   true  输出  times=3
   true  输出  times=4
   true  输出  times=5
   false while循环结束
   输出继续执行...
*/

//2)输出9的乘法表:    3*9=27
int num = 1;
while(num<=9){
    System.out.println(num+"*9="+num*9);
    num++;  //num+=2;
}
System.out.println("继续执行...");

 三、do...while结构

- do...while结构:先执行后判断,至少执行一次

- 当第1要素的代码与第3要素的代码相同时,首选do...while

1)语法:
  do{
    语句块
  }while(boolean);
2)执行过程:
    先执行语句块,再判断boolean的值,若为true则
    再执行语句块,再判断boolean的值,若为true则
    再执行语句块,再判断boolean的值,若为true则
    再执行语句块,如此反复,直到boolean的值为false时,do...while结束

import java.util.Scanner;
//猜数字小游戏
public class Guessing {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = (int)(Math.random()*1000+1); //1到1000之内的
        System.out.println(num); //作弊

        //假设num=250
        //300(大),200(小),250(对)
        int guess;
        do{
            System.out.println("猜吧!");
            guess = scan.nextInt(); //1+3
            if(guess>num){
                System.out.println("猜大了");
            }else if(guess<num){
                System.out.println("猜小了");
            }else{
                System.out.println("恭喜你猜对了");
            }
        }while(guess!=num); //2
    }
}

 四、for循环结构

- for结构:应用率最高,适合与次数相关的

1)语法:
    //    1    2    3
    for(要素1;要素2;要素3){
      语句块/循环体--------------反复执行的代码  4
    }
2)执行过程:
    1243243243243243...2为false时,循环结束

//累加和:1+2+3+4+...+99+100=?
int sum = 0; //存和
for(int i=1;i<=100;i++){
    sum = sum+i; //累加
}
System.out.println("sum="+sum);
/*
  执行过程:
        sum=0
  i=1   sum=1
  i=2   sum=1+2
  i=3   sum=1+2+3
  i=4   sum=1+2+3+4
  ...   sum=1+2+3+4+...
  i=99  sum=1+2+3+4+...+99
  i=100 sum=1+2+3+4+...+99+100
  i=101 false for循环结束
*/

//for中的循环变量num的作用域,仅在当前for中-----特殊记忆
for(int num=1;num<=9;num++){
    System.out.println(num+"*9="+num*9);
}
//System.out.println(num); //编译错误,超出num作用域了
for(int num=1;num<=9;num+=2){
    System.out.println(num+"*9="+num*9);
}
for(int num=9;num>=1;num--){ //9到1的
    System.out.println(num+"*9="+num*9);
}
for(int times=0;times<5;times++){
    System.out.println("行动是成功的阶梯");
}
System.out.println("继续执行...");
/*
   执行过程:
     times=0  true  输出
     times=1  true  输出
     times=2  true  输出
     times=3  true  输出
     times=4  true  输出
     times=5  false for循环结束
     输出继续执行...
*/

五 、跳出循环

break:跳出循环

continue:跳过循环体中剩余语句而进入下一次循环

5.1、break 

for(int i=1;i<=9;i++){
    if(i==4){ //在某种特定的条件下,提前结束循环
        break; //跳出循环
    }
    System.out.println(i+"*9="+i*9);
}
/* 执行过程:
   i=1  1*9=9
   i=2  2*9=18
   i=3  3*9=27
   i=4
*/

5.2、continue:跳过循环体中剩余语句而进入下一次循环

//输出9的乘法表,跳过能被3整除的
for(int i=1;i<=9;i++){
    if(i%3==0){
        continue; //跳过循环体中剩余语句而进入下一次循环
    }
    System.out.println(i+"*9="+i*9);
}
/* 执行过程:
   i=1  1*9=9
   i=2  2*9=18
   i=3
   i=4  4*9=36
   i=5  5*9=45
   i=6
   i=7  7*9=63
   i=8  8*9=72
   i=9
   i=10 false
*/

//输出9的乘法表,只要不能被3整除的
for(int num=1;num<=9;num++){
    if(num%3!=0){
        System.out.println(num+"*9="+num*9);
    }
}

六、补充拓展

三种循环结构如何选择
- 先看循环是否与次数有关:

        - 若有关--------------------------------------直接上for

        - 若无关,再看第1要素与第3要素的代码是否相同:

        - 若相同--------------------------------直接上do...while

        - 若不同--------------------------------直接上while

补充:

1、任何复杂的程序逻辑都可以通过三种结构来实现:

  • 顺序结构:从上往下逐行执行,每句必走
  • 分支结构:有条件的执行某语句一次,并非每句必走
  • 循环结构:有条件的执行某语句多次,并非每句必走

2、生成随机数:1到1000之内的

Math.random()-------------0.0到0.999999999999...
*1000---------------------0.0到999.9999999999...
+1------------------------1.0到1000.999999999...
(int)---------------------1到1000

3、变量的作用域/范围

  • 从变量的声明开始,到包含它最近的大括号结束

4、变量的重名问题

  • 作用域重叠时,变量不重名

6.1、嵌套循环 

  • 循环中套循环,常常多行多列时使用,外层控制行,内层控制列

  • 执行规则:外层循环走一次,内层循环走所有次

  • 建议:嵌套层数越少越好,能用一层就不用两层,能用两层就不用三层

  • break默认只能跳出当前一层循环

public class MultiTable {
    public static void main(String[] args) {
        for(int num=1;num<=9;num++){ //控制行
            for(int i=1;i<=num;i++){   //控制列
                System.out.print(i+"*"+num+"="+i*num+"\t");
            }
            System.out.println(); //换行
        }
        /*
          执行过程:
            num=3
              i=1  1*3=3
              i=2  2*3=6
              i=3  3*3=9
              i=4  false
              换行
            num=2
              i=1  1*2=2
              i=2  2*2=4
              i=3  false
              换行
            num=1
              i=1  1*1=1
              i=2  false
              换行
         */
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值