java系列:do-while循环控制和多重循环控制

146 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情

do-while循环控制

循环变量初始化;
do{
    循环体(语句);
    循环变量迭代;
}

说明:

  1. do while是关键字
  2. 也有循环四要素,只是位置不一样
  3. 先执行,再判断,也就是说,一定会执行一次
  4. 最后有一个分号
  5. while和do-while区别距离:要账

DoWhile01.java

int i = 1;
do{
    System.out.println("你好");
}while(i <= 10);
System.out.println("退出循环");

do-while细节

  1. 循环条件是返回一个布尔值的表达式
  2. do-while循环是先执行,再判断,因此它至少执行一次

练习:

  1. 打印1-100

  2. 计算1-100的和

  3. 统计1-200之间能被五整除但不能被三整除的个数(DoWhileExercise01.java)

    public class DoWhileExercise01 {
        public static void main(String[] args) {
            //统计0-200之间能被5整除但不能被3整除的个数
            //
            int sum = 0;
            int i = 0;
            do{
    ​
                if(i % 5 == 0 & i % 3 != 0){
                    sum += 1;
                }
                i += 1;
            }while (i <= 200);
            System.out.println(sum);
    ​
    ​
        }
    }
    
  4. 如果李四不还钱,则使出五连鞭,直到还钱为止

    import java.util.Scanner;
    public class DoWhileExercise02 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("你还不还钱!不还的话,我将使用出闪电五连鞭(y/n)");
            char answer = ' ';
            do {
                answer = scanner.next().charAt(0);
    ​
                if (answer == 'y'){
                    System.out.println("算你识相!");
                }else{
                    System.out.println("闪电五连鞭!!!");
                }
    ​
            }while (answer == 'n');
    ​
    ​
        }
    }
    

多重循环控制(难点!重点!)

介绍

1.将一个循环放在另一个循环内,就形成了嵌套循环,其中,for,while,do...while均可以作为外层循环和内层循环(建议一般使用两层,最多不要超过三层,否则,代码的可读性很差)

2.实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的档次循环,开始下一次循环

3.设外层循环次数为m次,内层循环体实际上需要执行m*n次

for(int i = 1; i <= 7; i++){
    for(int j = 1; j <= 2; j++){
        System.out.println("ok~~");//7*2=14
    }
}

多重循环练习题

MulForExercise01.java

import java.util.Scanner;
public class MulForExercise01 {
    public static void main(String[] args) {
//        1.统计三个班成绩情况,每个班有五名同学,求出各个班的平均分和所有班级的平均分(学生成绩从键盘输入)
//
//        2.统计三个班及格人数,每个班有五名同学
//
//        3.打印出九九乘法表
        Scanner scanner = new Scanner(System.in);
        int i = 0;
        int j = 0;
        int score = 0;
        int sum1 = 0;
        int sum2 = 0;
        int pass = 0;
        for (i = 0; i < 3; i++){
            System.out.println("请输入第" + (i + 1) + "个班的成绩");
            for (j = 0; j < 5; j++){
                System.out.println("请输入第" + (j + 1) + "个学生成绩");
                score = scanner.nextInt();
                if (score >= 60){
                    pass += 1;
                }
                sum1 += score;
​
            }
            System.out.println("第" + (i + 1) + "个班的平均分为" + sum1/5.0);
            System.out.println("第" + (i + 1) + "个班及格的人数为" + pass);
            sum2 += sum1;
            sum1 = 0;
            pass = 0;
​
        }
        System.out.println("三个班平均分为:" + sum2 / 3.0);
    }
}

1.统计三个班成绩情况,每个班有五名同学,求出各个班的平均分和所有班级的平均分(学生成绩从键盘输入)

2.统计三个班及格人数,每个班有五名同学

MulForExercise02.java

public class MulForExercise02 {
    public static void main(String[] args) {
        for (int i =1; i <=9; i++){
​
            for (int j=1; j <=i; j++){
                System.out.print(i + "*" + j +"=" +(i * j)+" ");
            }
            System.out.println(" ");
​
​
        }
​
​
​
    }
}

3.打印出九九乘法表

4.打印金字塔和空心金字塔

Stars.java

public class Stars {
    public static void main(String[] args) {
        /*
        思路分析
        化繁为简
        1.先打印一个矩形
​
         */
        //矩形
        for (int i = 1; i <= 5; i++){
            System.out.println("*****");
        }
        //打印半个金字塔
        for (int i = 1; i <= 5; i++){
​
            //在打印*之前要打印空格
            for (int k = 1; k <= 5 - i; k++){
​
​
​
                System.out.print(" ");
            }
​
​
            //i表示层数
            //控制每层打印的*的个数
            for (int j = 1; j <= 2 * i - 1; j++){
                if (j == 1 || j == 2 * i - 1 || i  == 5){
                    System.out.print("*");
                }
                else {
​
                    System.out.print(" ");
                }
​
​
            }
            //每打印完一层的*后就换行  println本身就会换行
​
            System.out.println();
        }
​
​
​
​
​
    }
}