前言

简单程序的编写大致分为以下3大步骤

(一):定义好了变量(变量声明和赋值)

(二):使用运算符操作定义好的变量进行运算。(运算符)

(三):流程控制语句控制代码的执行流程。(流程控制)

流程:简单来讲所谓流程就是完成1件事的多个步骤

流程控制:通过一些Java 流程控制语句来控制程序的执行流程。

 

一、条件判断语句

Java中有3中格式的分支判断语句。

1.if 条件分支

如果程序中存在多个独立的 if条件判断语句,程序执行过程中都会判断,如果条件全部满足分支都会执行

        int a = 100, b = 200, c = 199;
        int max = a, min = a;
        //如果程序中存在多个独立的if条件语句,那么分支判断都会依次执行。
        //1.先比较出A和B两个数字,哪个大?哪个小?
        if (a > b) {
            max = a;
            min = b;
        }
        //2.如果C比当前最大数字的还大,最后最大的就是C
        if (max < c) {
            max = c;
        }
        //3.如果C比当前最大的小,就让C和当前最小的比较
        if (min > c) {
            min = c;
        }
        System.out.println("最大值: " + max + " 最小值:" + min);
    }

 

2.if...else分支

非黑即白,只会执行1个分支,如果条件全部满足,则选择最近的1个分支执行

 //非黑即白判断奇偶数
        int a = -11;
        if (a % 2 == 0) {
            System.out.println(a + "是偶数");
        } else {
            System.out.println(a + "是奇数");
        }

 

3.if...else if...else if 分支

可以进行多条件判断,最终只会执行1个分支,如果条件全部满足,则选择最近的1个分支执行

        int a = 10;
        if (a == 10) {
            System.out.println("a等于0");
        } else if (a > 10) {
            System.out.println("a大于10");
        } else if (a < 10) {
            System.out.println("a小于于10");
        } else {
            System.out.println("其他");
        }

 

4.Switch分支

case后面用于匹配的项。只能跟常量值,不能是变量。

package process_control;

import java.util.Scanner;

public class TestSwitch {
    public static void main(String[] args) {
        System.out.print("请输入今天是周几: ");
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        if (number == 1) {
            System.out.println("今天是周一");
        } else if (number == 2) {
            System.out.println("今天是周二");
        } else if (number == 3) {
            System.out.println("今天是周三");
        } else if (number == 4) {
            System.out.println("今天是周四");
        } else if (number == 5) {
            System.out.println("今天是周五");
        } else if (number == 6) {
            System.out.println("今天是周六");
        } else if (number == 7) {
            System.out.println("今天是周日");
        } else {
            System.out.println("输入无效");
        }

        //如果switch的case中没有写break,会出现case穿透现象;
        //1个case匹配成功之后,依然会执行后面的case的代码;
        switch (number) {
            case 1:
                System.out.println("周一");
                break;
            case 2:
                System.out.println("周二");
                break;
            case 3:
                System.out.println("周三");
                break;
            case 4:
                System.out.println("周四");
                break;
            case 5:
                System.out.println("周五");
                break;
            case 6:
                System.out.println("周六");
                break;
            case 7:
                System.out.println("周日");
                break;
            default:
                System.out.println("无效");
                break;
        }
        //我们可以利用case穿透现象
        switch (number) {
            case 1:
            case 2:
            case 3:
                System.out.println("第1季度");
                break;
            case 4:
            case 5:
            case 6:
                System.out.println("第2季度");
                break;
            case 7:
            case 8:
            case 9:
                System.out.println("第3季度");
                break;

            case 10:
            case 11:
            case 12:
                System.out.println("第4季度");
                break;

        }
    }
}

 

5.Java三元运算符

三元运算符也可以实现流程控制,其功能等同于if...eles..条件判断语句。

        //1.定义两只老虎的体重
        int tigerOneWeight = 250, tigerTwoWeight = 170;
        //1.求两只老虎的最大体重?
        int maxTigerWeight = tigerOneWeight > tigerTwoWeight ? tigerOneWeight : tigerTwoWeight;
        System.out.println(maxTigerWeight);
        //2.求两只老虎的最小体重?
        int minTigerWeight = tigerTwoWeight < tigerOneWeight ? tigerTwoWeight : tigerOneWeight;
        System.out.println(minTigerWeight);

 

二、循环语句

在Java中可以通过 for、while和do while 3种循环,控制代码重复执行;

 

1.while和do...while循环

即便是while中条件不成立,do while循环也会先执行1次do代码块;

package process_control;

public class TestWhile {
    public static void main(String[] args) {
        int i = 0;
        while (i <= 100) {
            System.out.println(i);
            i++;
        }
        /*
        while循环和do...while循环的区别
       do while循环就是while循环反着写,
       但是do while循环,会先执行再判断....
       while循环是先判断,再执行.....
       所以即便是while中条件不成立,do while循环也会先执行do
        */
        int i2 = 0;
        do {
            System.out.printf("i2--%s\n", i2);
            i2++;
        } while (i2 <= 100);
    }

}

 

2.for循环

for循环的本质就是数数,for循环结合容器数据类型的索引进行数据的获取和赋值操作。

A.正常for循环

       //1.打印所有水仙花数,并且打印水仙花的个数。
        int count = 0;
        for (int i = 100; i <= 999; i++) {
            int b = i / 100 % 10; //百位数
            int s = i / 10 % 10; //十位数
            int g = i % 10;   //个位数
            //2.百位/十位/个位数获取到之后,进行立方求和求和操作=当前三位数就是水仙花数。
            int result = b * b * b + s * s * s + g * g * g;
            if (result == i) {
                System.out.println(i);
                count += 1;
            }

        }
        System.out.println(count);

 B.死循环

package process_control;

public class TestFor {
    public static void main(String[] args) {
        for (int i = 10; i > 0; i--) {
            System.out.println(i);
        }
        //死循环
        for (; ; ) {
            for (int i = 0; i < 100; i++) {
                System.out.println("Hi,Helloween.");
            }
        }

    }
}

C.For循环嵌套

在一个for循环中可以嵌套另一个for循环(外循环执行1次,内循环整体执行1次);

For循环嵌套就像表里中时间指针, 秒针转60次之后分针才转1次,分针转60次之后时针才转1次。

public class ForDemo2 {
    public static void main(String[] args) {
        for (int i = 0; i < 24; i++) {
            for (int j = 0; j < 60; j++) {
                for (int k = 0; k < 60; k++) {
                    System.out.println(i + "时" + j + "分" + k + "秒");
                }

            }

        }
    }

D.复杂格式for循环

public class ForDemo4 {
    public static void main(String[] args) {
        //反转数组中的索引元素
        int[] intArray = new int[]{89, 34, 9, 13, 56};
        System.out.println(Arrays.toString(intArray));
        //复制格式的for循环
        for (int start = 0, end = intArray.length - 1; start < end; start++, end--) {
            int temp = intArray[start];
            intArray[start] = intArray[end];
            intArray[end] = temp;

        }
        System.out.println(Arrays.toString(intArray));
    }
}

E.百钱百鸡

package com.itheima.process;

//100钱买100只百鸡:
//现有100元要买100只鸡,公鸡价格5元/只,母鸡价格3元/只,小鸡3只1块钱,使用100块钱去买100只鸡,总共有多少种买法?
//穷举上限思想去实现:把现在已有的下限和上限全部规定出来,然后在已有下限和上限范围之中进行判断:
// 100块钱最多能买20只公鸡
// 100块钱最多能买33只母鸡
//购买小鸡数量=总共买100只鸡-20只公鸡-33母鸡
public class ForDemo3 {
    public static void main(String[] args) {
        int totalCount = 100;
        int totalCost = 100;
        for (int cookCount = 0; cookCount <= 20; cookCount++) {
            for (int henCount = 0; henCount <= 33; henCount++) {
                //在每次循环中计算小鸡的数量=总共买100只鸡-coke-hen
                int chickCount = totalCount - cookCount - henCount;
                //条件不仅要限制买鸡的数量,也要满足一共花费100块钱
                if (chickCount % 3 == 0 && cookCount * 5 + henCount * 3 + chickCount / 3 == totalCost) {
                    System.out.println("公鸡:" + cookCount + " 母鸡:" + henCount + " 小鸡:" + chickCount);
                }
            }
        }
    }
    /*
    *程序运行结果:
    *   公鸡0      母鸡25    小鸡75
        公鸡4      母鸡18    小鸡78
        公鸡8      母鸡11    小鸡81
        公鸡12     母鸡4     小鸡84
    *
    * */
}

F.不死神兔

/*
    有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子;
    假如兔子都不死,问第二十个月的兔子对数为多少?
    从第三个月开始,每个兔子对数都是前两个月对数之和。 F(n)=F(n - 1)+F(n - 2) 斐波那契数列(思考思考)
    */
    public static void main(String[] args) {
        int[] rabbitCountArray = new int[20];
        rabbitCountArray[0] = 1;
        rabbitCountArray[1] = 1;
        //3个月开始每个月都生一对兔子
        for (int i = 2; i < rabbitCountArray.length; i++) {
            rabbitCountArray[i] = rabbitCountArray[i - 1] + rabbitCountArray[i - 2];
        }
        System.out.println(Arrays.toString(rabbitCountArray));
        //[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
    }

 

3.for和while循环的区别?

如果可以明确循环次数,使用for循环。

如果不可以明确循环次数,使用while循环。

例如以下需求可以使用while循环。

public static void main(String[] args) {
        //珠峰高度8844430毫米
        int zfHeight = 8844430;
        //一张纸的厚度0.1毫米
        double paperHeight = 0.1;
        int foldCount = 0;
        while (zfHeight > paperHeight) {
            foldCount++;
            paperHeight *= 2;
        }
        System.out.println(foldCount); //27  一张足够的纸对折27次之后厚度就能超过珠峰!!!
    }

 

三、循环控制

和Python一样,Java可以在循环中使用break退出整个循环,使用continue跳过本次循环;

package process_control;

public class TestBreak {
    public static void main(String[] args) {
        //1.continue:跳出本次循环
        for (int i = 0; i < 10; i++) {
            if (i == 4) {
                continue;
            }
            System.out.println(i);
        }
        //2.break:终止整个循环
        for (int i = 0; i < 10; i++) {
            if (i == 3) {
                System.out.println("程序退出!");
                break;
            }
            System.out.printf("i--%d\n", i);
        }
    }
}

 

 

 

参考

posted on 2021-10-18 10:18  Martin8866  阅读(58)  评论(0编辑  收藏  举报