Java基础入门4:程序流程控制(if、switch、for、while)

一、分支结构

在Java中,分支结构通常指的是if语句和switch语句。这些结构允许根据条件执行不同的代码块。

1、if语句

根据条件的(真或假)来决定执行某段代码。

1、常见if语句if-else:

if (condition) {
    // 如果条件为真,则执行这里的代码
} else {
    // 如果条件为假,则执行这里的代码
}

2、 if-else if-else语句:可以使用多个else if来检查多个条件。

if (condition1) {
    // 如果条件1为真,则执行这里的代码
} else if (condition2) {
    // 如果条件2为真,则执行这里的代码
} else {
    // 如果以上条件都不为真,则执行这里的代码
}

if分支的三种形式:

2、if-使用的几个常见问题

1、if(条件){},()后不能跟“;”,否则{}中的代码将不受的控制了。
2、如果if语句的中只有一行代码的情况,{}可以省略不写(但是不推荐省略)。

小知识差不多了,上几个小案例感受一下:

package com.itchinajie.branch;

public class ifDemo2 {
    public static void main(String[] args) {
        //目标:需要同学们掌握if分支三种形式的用法和执行流程。
        //需求1:测量用户体温,发现体温高于37度就报警。
        double t = 36.9;
        if(t > 37){
            System.out.println("这个人的温度异常,把他赶紧带走w~");
        }

        //需求2:发红包,你的钱包余额是99元,现在要发出90元
        //如果钱够触发发红包的动作,如果钱不够,则提示:余额不足。
        double money = 19;
        if(money > 90){
            System.out.println("发红包成功了~");
        }else {
            System.out.println("余额不足~~");
        }

        //需求3:某个公司有一个绩效系统,根据员工的打分输出对应的绩效级别。[0,60) D [60,80) C [80,90) B [90,100] A
        int score = 78;
        if(score > 0 & score <60){
            System.out.println("您的绩效级别是: D");
        }else if(score >=60 & score < 80){
            System.out.println("您的绩效级别是: C");
        }else if(score >=80 & score <90){
            System.out.println("您的绩效级别是:B");
        }else if(score >=90 &score <100) {
            System.out.println("您的绩效级别是:A");
        }else{
            System.out.println("您录入的分数有毛病~");
        }
    }
}

/*3、switch语句

switch语句用于根据表达式的值执行不同的代码块(“{}”称为代码块)。


switch (expression) {
    case value1:
        // 如果表达式的值等于value1,则执行这里的代码
        break;
    case value2:
        // 如果表达式的值等于value2,则执行这里的代码
        break;
    default:
        // 如果表达式的值与以上所有情况都不匹配,则执行这里的代码
}

1、switch分支的执行流程:

1、先执行表达式的值,再拿着这个值去与case后的值进行匹配。

2、与哪个case后的值匹配为true就执行哪个case块的代码,遇到break就跳出switch分支。

3、如果全部case后的值与之匹配都是false,则执行default块的代码。

2、switch使用时的注意事项

1.表达式 只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。

2.case给出的值不允许重复,且只能是字面量,不能是变量。

3.正常使用switch的时候,不要忘记写break,否则会出现穿透现象。

3、小案例:电子备忘录

package com.itchinajie.branch;
import java.util.Scanner;
public class switchDemo2 {
    public static void main(String[] args) {
        //switch分支
        Scanner sc = new Scanner(System.in);
        System.out.println("输入日期:");
        String date = sc.next();
        switch (date){
            case "周一":
                System.out.println("学习语文");
                break;
            case "周二":
                System.out.println("学习数学");
                break;
            case "周三":
                System.out.println("学习英语");
                break;
            case "周四":
                System.out.println("学习编程");
                break;
            case "周五":
                System.out.println("学习绘画");
                break;
            case "周六":
                System.out.println("打游戏");
                break;
            case "周日":
                System.out.println("郁郁寡欢,准备上班 ");
                break;
            default:
                System.out.println("您输入的信息不存在~~");
        }
    }
}

二、循环结构

在Java中,循环结构用于重复执行代码块,常见的循环结构包括for循环、while循环和do-while循环。

1、for循环结构

for循环用于指定循环的次数。

for (initialization; condition; update) {
    // 在条件为真时重复执行的代码块
}

初始化部分用于初始化循环控制变量,条件部分定义了循环继续执行的条件,更新部分用于更新循环控制变量。

应用场景:

1、减少代码的重复编写,灵活的控制程序执行。

2、批量生产数据。

package com.itchinajie.loop;

public class ForDemo1 {
    public static void main(String[] args) {
        //掌握for循环的使用方法

        /*流程:
              首先会执行初始化语句:int i = 0;
            i = 0,判断条件0 < 3,返回true,计算机会进入到循环中执行输出第一行Hello Word,接着执行迭代语句i++
            i = 0,判断条件0 < 3,返回true,计算机会进入到循环中执行输出第一行Hello Word,接着执行迭代语句i++
            i = 0,判断条件0 < 3,返回true,计算机会进入到循环中执行输出第一行Hello Word,接着执行迭代语句i++
            i = 0,判断条件0 < 3,返回false,循环就会立即结束。
         */
        for (int i = 0;i < 4;i++ ){
            System.out.println("HelloWorld");
        }
        System.out.println("----------------------------------------");
        for (int i = 1; i <= 5; i++){
            System.out.println("Hello World2");
        }
        System.out.println("----------------------------------------");
        for (int i = 1; i <= 10; i += 2){
            System.out.println("Hello World3");
        }
    }
}

2、While循环结构

while循环在每次迭代之前检查条件是否为真,如果为真则执行循环体中的代码块。

while (condition) {
    // 在条件为真时重复执行的代码块
}

for与while的区别: 功能上是完全一样的,for能解决的while也能解决,反之亦然。

使用规范:知道循环几次:用for;不知道循环几次建议使用:while。

来个小案例:

需求:世界最高山峰珠穆朗玛峰高度是:8848.86米=8848860毫米,假如我有一张足够大
的纸,它的厚度是0.1毫米。请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度?
分析:
1、定义变量存储珠穆朗玛峰的高度、纸张的高度。


2、使用while循环来控制纸张折叠,循环条件是(纸张厚度<山峰高度),循环每执行一次,就表示纸张折叠一次,并把纸张厚度变为原来两倍。
3、循环外定义计数变量count,循环每折叠一次纸张,让count变量+1;

答案:

package com.itchinajie.loop;

public class WhileDemo4 {
    public static void main(String[] args) {
        //使用while循环解决问题,并理解什么情况下使用while,for。
        //1.定义变量记住珠穆朗玛峰的高度和纸张的高度。
        double peakHeight = 8848860;
        double paperThickness = 0.1;

        //2.定义一个变量count用于记住纸张折叠了多少次、
        int count = 0;

        //3.定义while循环控制纸张开始折叠
        while (paperThickness < peakHeight){
            //把纸张进行折叠,纸张厚度变为原来的两倍。
            paperThickness *= 2;
            count++;
        }
        System.out.println("需要折叠的次数为:" + count);
        System.out.println("纸张厚度为:" + paperThickness);
    }
}

3、do-while循环结构

do-while循环先执行一次循环体中的代码块,然后在每次迭代之前检查条件是否为真。

特点:先执行后判断

此循环一般使用较少。

do {
    // 执行至少一次的代码块
} while (condition);

以上三种循环的区别:

for循环和while循环(先判断后执行);do...while(先执行后判断)

for循环和while循环的执行流程是一模一样的,功能上无区别,for能做的while也能做,反之亦然。

使用规范:如果已知循环次数建议使用for循环,如果不清楚要循环多少次建议使用while循环。
其他区别:for循环中,控制循环的变量只在循环中使用。while循环中,控制循环的变量在循环后还可以继续使用。

4、死循环、

可以一直执行下去的一种循环,如果没有干预不会停下来。

温馨提示:没事别写死循环

package com.itchinajie.loop;

public class EndLessLoopDemo6 {
    public static void main(String[] args) {
        //掌握死循环
        //1.for类型死循环
        /*for (  ;  ;){
            System.out.println("Hello World");
        }*/

        //2.while类型死循环
        /*while(true){
            System.out.println("Hello World2");
        }*/

        //3.do-while类型死循环
        do {
            System.out.println("Hello World3");
        }while(true);
    }
}

5、循环嵌套

循环中又包含循环。(大肠包小肠)

package com.itchinajie.loop;

public class LoopNestedDemo7 {
    public static void main(String[] args) {
        //掌握循环嵌套
        //打印三组“我爱中国”,每组三个
        for (int i = 0;i < 3;i++ ){
            for (int i1 = 0;i1 < 3;i1++) {
                System.out.println("我爱中国");
            }
            System.out.println("----------------------------");
        }
        for(int i = 0; i < 9;i++){
            for(int j = 0;j < 9;j++){
                System.out.print("*");//ln去掉为不换行
            }
            System.out.println();
        }


    }
}

三、跳转关键字break、continue

break:跳出并结束当前所在循环的执行。

continue:用于跳出当前循环的当次执行,直接进入循环的下一次执行。

注意事项

break:只能用于结束所在循环,或者结束所在switch分支的执行。
continue:只能在循环中进行使用。

来点小案例:

package com.itchinajie.loop;

public class BreakAndContinueDemo8 {
    public static void main(String[] args) {
        //掌握break和continue的用法
        //1.break:跳出并结束当前所在循环的执行。
        //场景:假如你有老婆,你犯错了,你老婆罚你说:5句我爱你
        //说到第三句的时候心软了,让你别说了
        for (int i = 1;i <= 5;i++){
            System.out.println("我爱你");
            if(i==3){
                break;
            }
        }
        System.out.println("-------------------");
        //2.continue:跳出当前循环的当次执行,直接进入循环的下次执行。
        //场景:假如你又有老婆,你又犯错了,你老婆罚你洗碗5天
        //第三天的时候你表现好,不用洗碗,但不解恨,第四天和第五天还要继续
        for (int i = 1;i <= 5;i++){

            if (i == 3){
                continue;
            }
            System.out.println("第"+ i + "天洗碗");
        }
        /*注意;break只能用于结束所在循环,或结束所在switch分支的执行。
          continue只能在循环中使用*/

    }
}

四、小拓展:生成随机数

在第三节我们讲了API和Scanner扫描器,今天再讲一个Random,两个都是比较常见的API

package com.itchinajie.Random;

import java.util.Random;

public class RandomDemo1 {
    public static void main(String[] args) {
        //掌握使用random生成随机数的步骤
        //1.导包:输入Random就可以生成提示
        //2.创建一个Random的对象,用于生成随机数
        Random r = new Random();
        //3.调用Random提供的功能:nextInt得到随机数
        int number = 0;//0-9
        for (int i = 0;i <=20;i++) {
            int date = r.nextInt(10);
            System.out.println(date);
        }
        //ctrl+Alt+T找到循环结构语句,可以连续生成随机数
        //注意:nextInt功能只能生成:0至n-1之间的随机数,不包含n
        //解决方法:如果想自定义区间,可以在r.nextInt()后+几减几来改变区间
        //拓展:java 其实给了我们一些功能直接就能得到指定区间的随机数;int date = r.nextInt(origin:10 , bound:30);但此种方法取值范围为左闭右开
        for (int i = 0;i < 20;i++){
            System.out.println();
        }
    }
}

注意:nextInt(n)功能只能生成:0至n-1之间的随机数,不包含n.

提示:文章所有案例均来自黑马Java课程

  • 36
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值