JavaSE 第四章 流程控制

本文章基于b站:BV1RK4y1g7A5(换了一个更完整的) 赵珊珊老师的java课程的学习加以个人理解做出的学习笔记整理。(p57-p71)

目录

分支结构

if

单分支

多分支

双分支 

 随机数

switch

循环结构

 while循环

do-while循环

for循环

关键字

break

continue

return 

循环结构练习


分支结构

if

单分支

(1)结构:
if(条件表达式,这个表达式的结果是布尔值:要么是false,要么是true){
        //如果上面()中的表达式返回结果是true,那么执行{}中代码
        //如果上面()中的表达式返回结果是false ,那么不执行{}中代码

        //PS: { }中的代码是否执行,取决于()中表达式的返回结果
}
(2)上面的代码中,我用四个单分支拼凑出四个选择,每个选择是独立的,依次判断执行的

(3)if后面的()中的条件,要按照自己需求尽量完善
(4){}可以省略不写,但是一旦省略,这个if就只负责后面的一句话,所以我们不建议初学者省略

多分支

【1】结构

if() {
}else if () {
}else if (){
} ...
else{
【2】else:隐藏了一个条件,跟上面分支条件表达式相反的功能
【3】多分支:好处:只要满足一个分支以后,后面的分支就不需要判断了--》效率高

【4】我们写代码的时候,尽量保证else的存在,作为兜底

双分支 

 

 随机数

 随机数:这个数在生成之前我们不确定这个数是多少,不可知
在java中依靠一个类:Math类帮助我们生成,这个类中有一个方法专门用来生成随机数:

 Math.random()--> [0.0,1.0)
 Math.random()*6--> [0.0,6.0)
(int)(Math.random()*6)--> [0,5]
(int)(Math.random()*6)+1--> [1,6]

练习1:[36,92]--> 92-36=56 --> [0,56]+32 --> (int)(Math.random()*57)+32

练习2:

public class test3 {
    boolean keeping;

    public void run() {
        keeping = true;
        // 1.输入积分
        Scanner sc = new Scanner(System.in);
        while (keeping) {
            System.out.print("请输入积分(输入-1退出):");
            // 判断积分输入是否合规
            if (sc.hasNextInt()) {
                int jiFen = sc.nextInt();
                if (jiFen >= 0) {
                    // 2.判断折扣等级
                    String mes = " ";
                    if (jiFen >= 8000) {
                        mes = "0.6";
                    } else if (jiFen >= 4000) {
                        mes = "0.7";
                    } else if (jiFen >= 2000) {
                        mes = "0.8";
                    } else {
                        mes = "0.9";
                    }
                    System.out.println("享受" + mes + "折");
                } else if (jiFen == -1) {
                    quit();
                } else {
                    System.out.println("请输入非负数");
                }
            } else {
                System.out.println("所输入数据非整数");
                sc.next(); // 读取非整数输入,将其丢弃
            }
        }
    }

    public void quit() {
        keeping = false;
        System.out.println("退出成功");
    }

    public static void main(String[] args) {
        test3 test3 = new test3();
        test3.run();
    }
}

 程序进入死循环具体原因是,当输入的数据不是整数时,sc.hasNextInt() 条件判断为假,然后进入到 else 分支中,执行了 System.out.println("所输入数据非整数"); 语句。然而,在这之后并没有再次读取输入,也就是没有使用 sc.next() 或其他获取输入的方法来将输入的非整数消费掉。因此,下一次循环时 sc.hasNextInt() 的结果仍然是假,仍会进入 else 分支,一直循环输出 "所输入数据非整数"。

要解决这个问题,可以在 else 分支中加上一个额外的读取非整数的语句,例如添加 sc.next() 来读取输入并将其丢弃。这样就可以确保在输入非整数时能够继续读取下一个输入,避免进入死循环。

单词簿管理系统——Java课设作业_ElysiaY的博客-CSDN博客

Ctrl+F搜索“消费的概念” ;简要:将其从可用状态变为不可用状态的过程,以确保后续操作的正确执行。

switch

【1】语法结构:

switch ( ) {

    case *:

    case *:

    ...
}
【2】switch后面是一个(),()中表达式返回的结果是一个等值,这个等值的类型可以为:int, byte,short,char ,String,枚举类型
【3】这个()中的等值会依次跟case后面的值进行比较,如果匹配成功,就执行:后面的代码
【4】为了防止代码的"穿透"效果:在每个分支后面加上一个关键词break,遇到break这个分支就结束

【5】类似else的"兜底"的分支: default分支
【6】default分支可以写在任意的位置上,但是如果没有在最后一行,后面必须加上break关键字,如果在最后一行的话,break可以省略
【7】相邻分支逻辑是一样的,那么就可以只保留最后一个分支,上面的都可以省去不写了

【8 】switch分支和if分支区别:
表达式是等值判断的话--》if , switch都可以

如果表达式是区间判断的情况---》if最好
【9 】 switch应用场合:就是等值判断,等值的情况比较少的情况下

循环结构

 while循环

【1】语法结构:

while(布尔表达式){

        循环体

}

【2】循环作用:将部分代码重复执行。
循环只是提高了程序员编写代码的效率,但是底层执行的时候依然是重复执行

【3】循环四要素

do-while循环

【1】语法结构:

do{

        循环体

}while(布尔表达式); //分号不可漏

【1】 while和do-while的区别:
while:先判断,再执行
do-while:先执行,再判断---》至少被执行一次,从第二次开始才进行判断

【2】什么场合使用do-while:
while(考试是否通过){
        考试;
}
---》不合适

do{
        考试;
} while(考试是否通过);

---》合适

for循环

【1】for的结构:
for(条件初始化;条件判断;迭代){

        循环体;
}
【2】i的作用域:作用范围:离变量最近的{}--->可以自己去控制
【3 】for循环格式特别灵活:格式虽然很灵活,但是我们自己写代码的时候不建议灵活着写。for (;;){}-->死循环

关键字

break

【1】停止最近的循环,

for(){

       while(){

                break;

        }

}

【2】使用标签,停止特定循环

outer1:

for(){

        outer2:

        for(){

                for(){

                        break outer2;

                }

        }

}

continue

【1】结束最近的本次循环,继续下一次循环

结束:不执行本次循环之后的代码,而转进下一次循环中;当i=36时,结束本次i=36的for循环,而后继续i=37及之后的循环

for(int i =1;i<=100;i++){

        if(i==36){

                continue; //打印1-100,没有36

        }

        System.out.println(i);

}

【2】使用标签,先结束,再继续特定循环

return 

return的作用:跟循环无关,就是程序中遇到return那么return所在的那个方法就停止执行了;

 打印1-35;当i=36时,后面的“------”不会打印出来,return所在的main方法已被停止执行

循环结构练习

JavaSE 第四章 流程控制之循环结构练习_ElysiaY的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值