0017 循环控制(for,while,do-while)

/*    for循环控制
    基本语法
    for(循环变量初始化;循环条件;循环变量迭代){
        循环操作(可以多条语句)
    }
        //1.for是关键字,表示循环控制
          2.四要素:(1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代
          3.循环条件是返回一布尔值的表达式
          4.for循环中的初始化和变量迭代可以写到其他地方,但两边分号不能省略
                  for(;;){//表示一个无限循环}
          5.循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开
              循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开
*/

/*    演示1:打印1~100之间所有是9的倍数的整数,统计个数及总和
    思路分析:
    一、化繁为简:
    1.完成输出1-100的值
    2.在输出中进行过滤,只输出9的倍数 i % 9 = 0
    3.统计个数:定义变量int count = 0;当条件满足时 count++;
    4.求总和,定义一个变量 int sum = 0;当条件满足时 sum += i;
    二、先死后活:
    1.为适应需求,把范围开始和结束的值做成变量
    2.还可以更进一步,把9的倍数也做成变量
*/

public class Control2 {

    public static void main(String[] args) {
        int count = 0;
        int sum = 0;
        int start = 1;
        int end = 100;
        int t = 9;
        for(int i = start; i <= end; i++){
            if (i % t == 0) {
                System.out.println("i=" + i);
                count++;
                sum += i;
        }
    }
        System.out.println("count=" + count);
        System.out.println("sum=" + sum);
    }
}

/*    演示2:输出整数和为5的加法
    思路分析:
    一、化繁为简
    1.先输出 0 ~ 5
    2.找出规律进行拆分,后面加的时 5-i;
    二、先死后活
    1.把5替换成变量n
*/


public class Control2 {

    public static void main(String[] args) {

        int n = 5;
        for(int i = 1; i <= n; i++) {
            System.out.println(i + "+" + (n-i) + "=" + n);
        }
    }
}

/*    while循环控制
    基本语法
    while(循环条件){
        循环体(语句);
        循环变量迭代;
    }
        //1.while循环也有四要素,只是位置和for不一样
          2.循环条件是返回一个布尔值的表达式
          3.while循环是先判断再执行语句
*/

//    演示3:打印1-100之间所有能被3整除的数

public class Control2 {

    public static void main(String[] args) {
        int i = 1;
        int endi = 100;
        while(i <= endi) {
            if(i % 3 ==0) {
                System.out.println(i);
        }
                i++;
    }
    }
}
*/
//    演示4:打印40-200之间所有的偶数

public class Control2 { 

    public static void main(String[] args) {
        int j = 40;
        int endj = 200
        while(j <= endj) {
            if(j % 2 == 0) {
                System.out.println(j);
            }
            j++;
        }

    }
}

/*    do-while循环控制
    基本语法
    循环变量初始化;
    do{
        循环体(语句);
        循环变量迭代;
    }while(循环条件);
        //1.do while是关键字
          2.也有循环四要素,循环条件也是返回一个布尔值
          3.先执行在判断,所以至少执行一次
          4.最后有一个分号;
*/

// 演示5:统计1-200之间能被5整除但不能被3整除的个数

public class Control2 {

    public static void main(String[] args) {
        int k = 1;
        int count = 0;
        do {
            if(k % 5 ==0 && k % 3 !=0){
            System.out.println(k);
            count++;
            }
            k++;
        }while(k <=200);
        System.out.println("count=" + count);
    }
}

/*    多重循环控制
    1.将一个循环放在另一个循环体内,就形成了嵌套循环。其中for,while,do-while均可以作为
      外层循环和内层循环。一般不超过3层,否则可读性很差
    2.实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,
      才会完全跳出内层循环,才可结束外层的当次循环,开始下一次循环
    3.设外层循环次数为m次,内层为n次,则内层循环需要执行m*n次
        for(int i = 1;i <= 7;i++){    //第一层循环 7次
            for(int j = 1;j <= 2;j++){    //第二层循环 2次
                System.out.println("i=" + i + "j=" + j);    //共循环7*2=14
            }
          }
*/
/*    演示6:统计3个班的成绩情况,每个班有5名同学,求出各个班的平均分和所有班级的平均分(成绩键盘输入)
           并统计三个班及格人数
    思路分析:
    1.先统计1个班,5个学生的成绩 使用for
    1.1创建Scanner对象,接收用户输入
    1.2得到该班级的平均分,定义 double sum 把成绩全部累计

    2.统计3个班的平均分 i表示班级,j表示学生

    3.所有班级的平均分
    3.1定义变量 double totalScore 累计所有成绩
    3.2当多重循环结束时,totalScore/3

    4.统计三个班及格人数
    4.1定义变量 int passNum = 0;当学生成绩 >=60,passNum++,使用if
*/

import java.util.Scanner;
public class Control2 {

    public static void main(String[] args) {

    Scanner myScanner = new Scanner(System.in);
    double totalScore = 0;
    int passNum = 0;
    for(int i = 1; i <= 3;i++){
    double sum = 0;
    for(int j = 1;j <= 5;j++) {
        System.out.println("请输入第" + i + "个班的第" + j + "个学生的成绩");
        double score = myScanner.nextDouble();
        if(score >= 60) {
            passNum++;
        }
        sum += score;
        System.out.println("成绩为" + score);
        }
    System.out.println("sum=" + sum + "平均分=" + (sum / 5));
    totalScore += sum;
        }
    System.out.println("三个班总分=" + totalScore + "平均分=" + (totalScore / 15));
    System.out.println("及格人数=" + passNum);
    }
}

/*    演示7:打印空心金字塔
    思路分析:
    1.先打印一个矩形
    *****
    *****
    *****
    *****
    *****
    2.打印半个金字塔
    *
    **
    ***
    ****
    *****
    3.打印整个金字塔 
    *                    1个* 4个空格
   ***                    3个* 3个空格
  *****                    5个* 2个空格
 *******                7个* 1个空格
*********                9个* 0个空格
    4.打印空心金字塔
    *                    1个* 第一个和最后一个位置都是*
   * *                    2个* 
  *   *                    2个* 
 *     *                2个* 
*********                9个* 全部输出*

    5.先死后活
    1.把5层做成变量 int totalLevel = 5;
*/
public class Control2 {

    public static void main(String[] args) {
        int totalLevel = 5;
        for(int i = 1;i <= totalLevel;i++){    //i表示层数
            //在输出*之前,还要输出空格
            for(int k = 1;k <= totalLevel - i;k++){
                System.out.print(" ");
            }
            //控制打印每层的*个数
            for(int j = 1;j <= 2 * i - 1;j++){
                //当前行第一个和最后一个位置是*,最后一层全部*
                if(j == 1 || j == 2 * i - 1 || i ==totalLevel ){
                    System.out.print("*");
                } else {//其他情况输出空格
                    System.out.print(" ");
                }
        }
            //每打印完一层后就换行
            System.out.println("");
        }

    }
}

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nzmzmc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值