Java循环

138 阅读4分钟

Java循环

1.1 while循环

 /* 
     先判断条件表达式结果是否为true,如果为true执行循环体,执行完循环体之后 再次判断条件表达式结果
     如果为true 再次执行循环体;直到条件表达式结果为false的时候 循环结束;
     while后面的花括号 里面的代码 称之为 循环体
     while循环有可能一次都不执行 当第一次条件判断为false
*/  

斐波那契数列
    public static void method1(){
    int a = 1,i = 20;
    int b = 0;
    System.out.print(1 + ",");
    while( i > 0 ){
        int c = a + b;
        System.out.print(c + ",");
        b = a;
        a = c;
        i--;
        }
    }

练习
    /*
     * 动态录入班级人数和学员成绩,计算班级学员的平均成绩
     * 我们可以通过 Scanner 类来获取用户的输入。作用于控制台的输入输出与C里的scanf类似
       创建scanner类的对象    Scanner sc=new Scanner(System.in);
     */
    private static void method2() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请录入班级学员人数:");
        int stuNum = sc.nextInt();
        // 重复执行
        int count = 1;
        int sum = 0;
        while (count <= stuNum) {
            //录入学员成绩
            System.out.println("请录入第 " + count + " 个学生的成绩");
            int score = sc.nextInt();
            //成绩累加
            sum += score;
            count++;
        }
        System.out.println("sum : " + sum);
        System.out.println("avg: " + (sum / stuNum));
    }

1.2 do...while 循环

/*
    第一次执行循环体之前不用做任何判断;
    以后每次执行之前都是先判断条件,条件为true执行循环体,否则循环结束。
     */
     
斐波那契数列
    public static void method3(){
        int a = 1,i = 20;
        int b = 0;
        System.out.print(1 + ",");
        do {
            int c = a + b;
            System.out.print(c + ",");
            b = a;
            a = c;
            i--;
        }while (i > 0);
    }
练习
/*
     * 动态录入班级人数和学员成绩,计算班级学员的平均成绩
*/
    private static void method4() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请录入班级学员人数:");
        int stuNum = sc.nextInt();
        // 重复执行
        int count = 1;
        int sum = 0;
        do {
            //录入学员成绩
            System.out.println("请录入第 " + count + " 个学生的成绩");
            int score = sc.nextInt();
            //成绩累加
            sum += score;
            count++;
        } while (count <= stuNum);
        System.out.println("sum : " + sum);
        System.out.println("avg: " + (sum / stuNum));
    }

1.3 for循环

1.3.1 基本语法
 /*
    // for循环 是对while循环 写法上 的一种简化
    // 1,先执行 int count=0 初始化语句 只执行一次 ;
    // 2,判断条件语句结果是否为true ,为true 则执行循环体 否则循环结束;
    // 3,然后 循环控制次数变量递增;递增之后继续判断条件语句
*/    

    for (int i= 0; i < 5; i++) {
    System.out.println(i);
    }
1.3.2 for的练习
/*
     * 动态录入班级人数和学员成绩,计算班级学员的平均成绩
*/
    private static void method5() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请录入班级学员人数:");
        int stuNum = sc.nextInt();
        // 重复执行
        int sum = 0;
        for (int count = 1; count <= stuNum; count++) {
            //录入学员成绩
            System.out.println("请录入第 " + count + " 个学生的成绩");
            int score = sc.nextInt();
            //成绩累加
            sum += score;
        }
        System.out.println("sum : " + sum);
        System.out.println("avg: " + (sum / stuNum));
    }
1.3.3 其他写法
/**
     * for循环其他变体
     */
    private static void method6() {
        // 死循环
        for (int i = 0; ; i++) {
            System.out.println(i);
        }
        // 死循环
        for (; ;) {
            System.out.println("hello");
        }
    }
1.3.4 循环嵌套
    private static void method7() {
        //循环嵌套 外循环每执行一次 内循环执行3次
        for (int i = 0; i < 5; i++) {
            System.out.println("外层循环 " + i);
            for (int j = 0; j < 3; j++) {
                System.out.println("  内层循环 " + j);
            }
        }
        //循环嵌套
        int i = 0;
        while (i < 5) {
            System.out.println("外层循环 " + i);
            int j = 0;
            while (j < 3) {
                System.out.println("  内层循环 " + j);
                j++;
            }
            i++;
        }
    }
1.3.6 for循环的练习题
/*
     * 求 0-100之间所有偶数相加的和
*/
    private static void method8() {
        int sum = 0;
    /*    for (int i = 0; i <= 100; i++) {
            if (i % 2 == 0) {
                sum += i;
            }
        }*/
        // 每次递增2
        //  for (int i = 2; i <= 100; i = i + 2) {
        for (int i = 2; i <= 100; i += 2) {
            sum += i;
        }
        System.out.println("sum: " + sum);
    }

1.4 关键字

1.4.1 break关键字
/**
     * break 终止当前循环(紧跟的循环);
     */
    private static void method9() {
        //break用在for循环中
        for (int i = 0; i < 10; i++) {
            if (i == 3) {
                //break 终止当前循环(紧跟的循环);
                break;
            }
            System.out.println(i);
        }
        System.out.println("end");
        //break用在while循环中
        int i = 0;
        while (i < 10) {
            if (i == 3) {
                break;
            }
            System.out.println(i);
            i++;
        }
    }

        //在嵌套循环中使用
    private static void method10() {
            //循环嵌套 外循环每执行一次 内循环执行3次
        for (int i = 0; i < 5; i++) {
            if (i == 3) {
                break;
            }
            System.out.println("外层循环" + i);
            for (int j = 0; j < 3; j++) {
                /*if (j == 1) {
                    // break 终止当前循环(紧跟的循环)
                    break;
                }*/
                System.out.println("内层循环" + j);
            }
        }
    }
1.4.2 continue关键字
/**
     * continue 用来终止当前循环的某一次循环;continue下面的代码不会执行;
     */
    private static void method11() {
        //continue用在for循环中
        for (int i = 0; i < 10; i++) {
            if (i == 3) {
                // continue 终止当前循环的某一次循环;continue下面的代码不会执行;
                continue;
            }
            System.out.println(i);
        }
        System.out.println("end");
​
        //continue用在while循环中
        //注意点: 如果 i++放在continue下面 会出现死循环
        int i = 0;
        while (i < 10) {
            i++;
            if (i == 3) {
                continue;
            }
            System.out.println(i);
        }
    }
1.4.3 return关键字

return 是用来结束方法的

private static void method12() {
        for (int i = 0; i < 5; i++) {
            if (i == 3) {
                return;
            }
            System.out.println("外层循环 " + i);
        }
        System.out.println("end");
    }

补充:

工具类Scanner
 /**
     * Scanner 是个工具类用来模拟和用户之间的交互
     */
    public static void method6() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串内容");
        // sc.next()阻塞方法  一直等待 直到用户录入
        String str = sc.next();
        System.out.println("str: " + str);
        //
        System.out.println("int类型: ");
        // sc.nextInt()阻塞方法
        int a = sc.nextInt(); //234
        System.out.println("a: " + a);
        //nextDouble方法接受一个double值
        double b = sc.nextDouble();
        System.out.println("b: " + b);
    }