【JavaSE】逻辑控制:顺序、分支和循环结构

news2025/1/15 13:46:27

目录

一、概述与顺序结构

1.逻辑控制的概述

2.顺序结构

二、分支结构

1.if语句

2.switch语句

3.switch语句与if语句的对比

三、循环结构

1.while语句

2.for语句

3.do…while循环(选学)

四、循环的跳转

1.break语句

2.continue语句

五、总结(与C的差异)

一、概述与顺序结构

1.逻辑控制的概述

逻辑控制包括三种结构:顺序结构,分支结构和循环结构,这里主介绍后面两种

2.顺序结构

顺序结构是结构中最简单,也是最常见的一种。从上到下写代码,从上到下打印数字,就是顺序的一种

二、分支结构

分支结构有两种:if语句和switch语句

1.if语句

(1)简单的if条件语句

【语法规则】如果布尔表达式结果为true,执行if中的语句,否则不执行

if(布尔表达式){
  // 复合语句
}

【实例】

public static void main(String[] agrs) {
        int score = 88;
        if(score>=80) {
            System.out.println("分数>="+score+"可以吃大鸡腿");
        }
    }

只要满足条件,就会进入花括号内执行语句;否则直接跳过。

(2)if…else语句

语法规则】如果布尔表达式结果为true,则执行if中语句,否则执行else中语句

if(布尔表达式){
  // 复合语句1
}else{
  // 复合语句2
}

【实例】二选一

public static void main(String[] agrs) {
       
        int score = 88;
        if(score>=90) {
            System.out.println("吃鸡腿");
        } else {
            System.out.println("吃大嘴巴子");
        }

    }

(3)if…else if多分支语句

【语法结构】表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3。其中,可以嵌套多层else if结构

if(布尔表达式1){
  // 语句1
}else if(布尔表达式2){
  // 语句2
}else{
  // 语句3
}

【实例】

题目:

分数在 [90, 100] 之间的,为优秀
分数在 [80, 90) 之前的,为良好
分数在 [70, 80) 之间的,为中等
分数在 [60, 70) 之间的,为及格
分数在 [ 0, 60) 之间的,为不及格
错误数据

public static void main(String[] agrs) {
       
        int score = 88;
        if(score >= 90){
        System.out.println("优秀");
                }else if(score >= 80 && score < 90){
        System.out.println("良好");
                }else if(score >= 70 && score < 80){
        System.out.println("中等");
                }else if(score >= 60 && score < 70){
        System.out.println("及格");
        System.out.println("不及格");
                }else{
        System.out.println("错误数据");
        }
    }

}

(4)代码风格与易错点

【代码风格】

建议:{ 放在 if / else 同一行

int x = 10;
if (x == 10) {
  // 语句1
} else {
  // 语句2
}

【易错1】分号问题:在if后面加了个分号

public static void main(String[] args) {
        int a=10;
        if(a>12);
        {
            System.out.println("测试");
        }
    }

【易错2】悬垂else:也就是if与else的配对问题

public static void main(String[] args) {
       /* int a=10;
        if(a>12);
        {
            System.out.println("测试");
        }*/
        int x = 10;
        int y = 10;
        if (x == 10)
            if (y == 10)
                System.out.println("aaa");
            else
                System.out.println("bbb");

    }

正确做法:需要合理使用括号,不然易出现错误

 public static void main(String[] args) {
      
        int x = 10;
        int y = 10;
        if (x == 10) {
            if (y == 10)
                System.out.println("aaa");
        }else
                System.out.println("bbb");

    }

2.switch语句

(1)基本语法

switch(表达式){
case 常量值1:{
语句1;
[break;]
}
case 常量值2:{
语句2;
[break;]
}
...
default:{
内容都不满足时执行语句;
[break;]
}
}

【执行流程】

1. 先计算表达式的值
2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
3. 当表达式的值没有与所列项匹配时,执行default

(2)代码实例:根据 day 的值输出星期

public static void main(String[] args) {

        int day = 1;
        switch(day) {
            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后面的值匹配,决定从哪个入口进去

(3)switch语句需要注意的点

  • 多个case后的常量值不可以重复
  • switch的括号内不能是以下类型的表达式:long、float、double、boolean
  • break 不要遗漏, 否则会失去 "多分支选择" 的效果
  • switch 不能表达复杂的条件
  • switch 虽然支持嵌套, 但是很丑,一般不推荐~
  • 表达式的值可以是字符串

3.switch语句与if语句的对比

(1)if语句中的表达式可以是复杂表达式,但是switch不能表达复杂的条件

(2)分支越多,switch语句的优质越大

(3)从使用效率上区分,早对同一个变量的不同值作条件判断时,使用switch语句的效率更高一些,尤其分支越多的时候;从语句的实用性的角度,switch语句肯定不如if语句

三、循环结构

1.while语句

(1)语法结构

while(条件表达式){
循环体;
}

(2)用法举例:用while循环打印1-10的数字

public static void main(String[] args) {
        int i=1;
        while(i<=10) {
            System.out.println(i);
            i++;
        }
    }

 

2.for语句

(1)语法结构

for(表达式1;布尔表达式2;表达式3){
循环体;
}

表达式1:该表达式用于初始化循环控制变量,它只在循环开始时执行一次。

表达式2:循环条件表达式,它的类型为boolean,如果表达式的值为true就执行一次循环体。

表达式3:该表达式用于改变循环体变量的值。

(2)代码实例:用来计算1-100数字的和

public static void main(String[] args) {
       int i = 1;
       int sum = 0;
       for(i=1;i<=100;i++) {
           sum+=i;
       }
       System.out.println(sum);
    }

3.do…while循环(选学)

(1)语法结构

do{
循环语句;
}while(循环条件);

与while循环不同,do…while循环无论条件是否满足,都会执行一次循环语句,剩下的与while循环相同。

(2)注意事项

do while 循环最后的分号不要忘记

四、循环的跳转

循环的跳转也就是由两个语句控制:break与continue;在C语言中都学过,break也就是跳出整个循环体,而continue就是跳过本次的循环(会少一次循环次数),直接进入下一场的循环。

1.break语句

break语句分为两种:不带标号的break与带标号的break。

(1)不带标号的break语句

【介绍】不带标号的break也就是常见的break,用于终止break语句所在的循环。

【用处】可以用在switch、while循环、do…while循环和for循环中

【实例】用来求1-100数字的和,计算完就跳出循环

public static void main(String[] args) {
     int sum = 0;
     int control = 1;
     while(true) {
         sum+=control;
         if(control==100) {
             break;
         }
         control++;
     }
     System.out.println("1-100的总和="+sum);
    }

(2)带标号的break语句

【语法结构】break 标号;

意思:将标号后面的循环终止

【用处】可以终止标号指定的循环,常用于跳出多层循环的情况

【实例】当九九口诀表的积大于16时终止外层循环(部分,用于测试)

先看没有使用break的时候:

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

    }

加了标号:

public static void main(String[] args) {
         int i = 1;
loop: for(i=1;i<=5;i++) {
             int j = 1;
           for(j=1;j<=i;j++) {
                        if(i*j>10) {
                            break loop;
                        }
               String result = String.format("%-1d*%d=%-2d", j, i, (i * j));
               System.out.print(result + "  ");
            }
               System.out.print("\n");
       }

对比:

2.continue语句

continue语句也分为两种,不带标号的continue语句和带标号的continue语句

(1)不带标号的

【介绍】和常见的continue一样,用于终止一次循环,进入下一次循环

【去向】常用在while、do…while和for语句中

【用例】输出1-100的数字,过滤掉不能被7整除的数

public static void main(String[] args) {
        int i = 1;
        for(i=1;i<=100;i++) {
            if(i%7!=0) {
                continue;
            }
            System.out.println(i+"、");
        }
    }

结果: 

(2)带标号的

【语法格式】continue 标号;

【用处】跳过标号指定的循环语句一次循环,然后判断指定标号的循环条件,以决定是否执行标号指定的循环

【用例】使用带标号的for循环和带标号的continue语句输出九九口诀表

public static void main(String[] args) {
        outer:for(int i=1;i<=9;i++) {
                for(int j=1;j<=9;j++) {
                    if(j>i) {
                       System.out.println();
                        continue outer;
                    }
                    String result = String.format("%-1d*%d=%-2d", j, i, (i * j));
                    System.out.print(result + "  ");
                }
                System.out.println();
        }

    }

结果:

去掉标号:

五、总结(与C的差异)

(1)if语句的条件表达式必须是布尔表达式

(2)switch的表达式可以是字符串,但是有类型的限制

(3)多了带标号的break和continue

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1149298.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【设计模式】第20节:行为型模式之“备忘录模式”

一、简介 备忘录模式也叫快照模式&#xff0c;具体来说&#xff0c;就是在不违背封装原则的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff0c;以便之后恢复对象为先前的状态。这个模式的定义表达了两部分内容&#xff1a;一部分是…

git重装后如何连接以前项目

git重装后如何连接以前项目 1、配置秘钥 点击 Git Bash Here&#xff0c;进入命令操作窗口 生成本地git仓库秘钥&#xff1a; 1、填写自己邮箱 2、一直回车 ssh-keygen -t rsa -C “xxxxxqq.com”3、使用cat查看生成的秘钥&#xff0c;粘贴并设置到gitee上 cat ~/.ssh/id_r…

3.2、Linux开发工具之gcc/g++

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 背景知识 gcc如何完成 预处理 编译 汇编 链接 函数库 gcc选项 g和gcc的区别 背景知识 二进制-->汇编-->C-->C&#xff0c;java&#xff0c;php等 刚开始&#xff0c;工程师和科学家们是通过二进制指…

Flutter PopupMenuButton下拉菜单

下拉菜单是移动应用交互中一种常见的交互方式,可以使用下拉列表来展示多个内容标签,实现页面引导的作用。在Flutter开发中,实现下拉弹框主要有两种方式,一种是继承Dialog组件使用自定义布局的方式实现,另一种则是使用官方的PopupMenuButton组件进行实现。 如果没有特殊的…

Apache Doris (四十八): Doris表结构变更-替换表

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

浅析智慧水务平台在城市发展中的应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;当下&#xff0c;以数字孪生为主的数字技术愈发成熟&#xff0c;为使得长江水环境治理能够“长治久安”&#xff0c;上海院在长江大保护先行先试城市九江城中水环境治理中启用了智慧水务先进理念&#xff0c;搭…

使用requests库进行HTTP爬虫编程

目录 一、安装requests库 二、发送HTTP请求 三、解析HTML页面 四、处理HTTP响应和异常 五、使用代理和会话管理 六、使用多线程或多进程提高效率 七、数据存储和处理 八、注意事项和总结 在当今的数字化世界中&#xff0c;数据已经成为了一种宝贵的资源。而网络爬虫程序…

众和策略可靠吗?退市股票重组成功多久能上市?

可靠 跟着资本商场的不断发展&#xff0c;股市上出资的热情愈发高涨。在出资行为中&#xff0c;许多出资者挑选在较低价位上购买退市股票&#xff0c;借此实现获利。但当一只退市股票宣告成功进行重组并将从头上市&#xff0c;许多出资者会关心一个问题&#xff1a;这只退市股…

HTTPS协议与WordPress升级后网站不兼容的解决方法

茹莱神兽个人博客之前上线装了一个WordPress缓存插件WP Super Cache&#xff0c;这个WordPress插件安装是有一些条件的&#xff1b;茹莱神兽没有注意这些&#xff0c;直接按照常规插件的方法装的&#xff0c;结果插件出现了后台不兼容问题&#xff0c;不过还是能勉强用&#xf…

微信小程序的学生宿舍门禁签到请假管理系统

宿舍门禁管理系统具有通知公告、宿舍规则等功能。宿舍门禁管理系统采用Java语言&#xff0c;Springboot框架&#xff0c;基于mysql数据开发&#xff0c;实现了学生、辅导员、问题学生、通知公告、系统管理等内容进行管理&#xff0c;本小程序具有良好的兼容性和适应性&#xff…

众和策略:暖市场提信心 逾30家公司加入回购增持队伍

A股公司回购增持热潮仍在持续。据不完全统计&#xff0c;10月29日晚&#xff0c;有逾越30家上市公司会集发表了回购计划及重要股东、董监高增持计划&#xff0c;用实践举动为商场注入暖意&#xff0c;以真金白银传递开展决计。其间&#xff0c;不少上市公司控股股东、实控人或董…

PHP判断get、post、put、patch、delete、ajax请求

PHP中&#xff0c;我们可以通过$_SERVER[REQUEST_METHOD]来判断当前的请求类型。下面是一个判断当前请求类型的示例代码&#xff1a; <?php function getRequestMethod() {$request_method $_SERVER[REQUEST_METHOD];switch ($request_method) {case GET:return get;case…

【mysql】数据库插入默认值defalut

1. 插入的默认值default drop table if exists test_default; create table test_default(id int primary key ,ts timestamp default CURRENT_TIMESTAMP ) ENGINEINNODB DEFAULT CHARSETutf8;truncate test_default; insert into test_default(id,ts) values(1,default); ins…

课题研究结硕果,行稳致远再启航——CASAIM与中国船级社在《三维扫描测量技术在新造船过程控制和检验》圆满结题

近期&#xff0c;中国船级社&#xff08;CCS&#xff09;组织召开了《三维扫描测量技术在新造船过程控制和检验》研究项目结题评审会&#xff0c;来自全国各地的船东、设计单位、船厂、科研院所、设备厂家等单位的多位专家和代表以线上视频会议方式对此项研究及其研究成果进行了…

python学习9

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

Python学习参考

文章目录 ⭐️写在前面的话⭐️一、Python的历史与发展1、历史2、发展Python 1.0时代&#xff1a;起源与诞生Python 2.0时代&#xff1a;崛起Django和Flask引领的WEB开发模式人人都能胜任的网络爬虫比shell更好用的自动化运维工具数据分析与科学计算三剑客 后Python2与Python3时…

【达梦数据库】数据更新、DM索引(超详细)

文章目录 一、数据更新1&#xff09;插入数据&#xff08;insert into&#xff09;1. 值插入&#xff08;insert into ... values...&#xff09;2. 查询插入&#xff08;insert into...select...&#xff09; 2&#xff09;修改数据&#xff08;update...set...&#xff09;3&…

算法leetcode|86. 分隔链表(rust重拳出击)

文章目录 86. 分隔链表&#xff1a;样例 1&#xff1a;样例 2&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 86. 分隔链表&#xff1a; 给你一个链表的头节点 head 和一个特…

智能工厂解决方案

智能工厂解决方案&#xff1a;生产工单 智能工厂解决方案&#xff1a;物流中转 样品单-4.2寸 工单任务卡-4.2寸 工单流转卡-4.2寸 生产配送卡-4.2寸 工序参数卡-7.5寸 生产拣配单-7.5寸 仓库24代-参数 接收路由器发送的数据信息并解析&#xff0c;做出相应的指示&#…

低压系统防雷保护综合应用方案

低压系统的防雷保护是指保护低压电源系统和电气设备免受雷击和电涌电压造成的损坏的技术措施。它包括直击雷保护、侵入波保护、等电位连接和防雷接地等方面。它在通信、光伏、电动汽车等行业都有广泛的应用。 地凯科技低压系统防雷保护是指保护低压电源系统和电气设备免受雷击…