• 【JavaSE】JavaSE之控制逻辑


    在这么久的代码学习中,我们会发现,无论多厉害的代码,都是由if else循环组成的,这就是逻辑控制来实现的,所以今天我们将进行对逻辑控制的了解与学习~~

    一.概述

    我们日常生活中,每天都会做相同的事情,早起–>吃早饭–>学习–>吃中饭–>学习–>吃晚饭–>学习–>睡觉(此处举例子哈哈哈,当然不是我QAQ)所以每天如此,形成了一个循环,每天的学习也会让你在秋招能获得满意的offer,人生得到改变。
    其实程序和人生是一样:顺序中夹杂着循环,伴随一次次选择不断成长。
    在这里插入图片描述

    二. 顺序结构

    顺序结构比较简单,按照代码书写的顺序一行一行执行,结果一个一个按顺序打印。
    在这里插入图片描述
    在这里插入图片描述

    三. 分支结构

    3.1 if 语句

    1. 语法格式1
      在这里插入图片描述
      如果布尔表达式结果为true,执行if中的语句,否则不执行。
      注意:一定是布尔表达式,和c语言有所不同。
    2. 语法格式2
      在这里插入图片描述
      如果布尔表达式结果为true,则执行if中语句,否则执行else中语句。
    3. 语法格式3
      在这里插入图片描述
      表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3。
      举例练习以上三种格式:
      1)判断一个数字是奇数还是偶数:
      在这里插入图片描述
      2)判断一个数字是正数,负数,还是零:
      在这里插入图片描述
      3)判断一个年份是否为闰年:
      普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
      世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。
      在这里插入图片描述
      综上:有的同学会有疑问,就是为什么判断这些数字的时候不可以自己输入呢?像c语言里面的scanf一样,随意输入一个数字去判断,那我们接下来介绍一下在Java里面的输入

    普通的一次性输入:
    在这里插入图片描述
    此处我介绍一下,第二行开头的Scanner是一个类,在写这一个类的时候最好敲一下回车,因为在Java里面也会引用类似于头文件的语句,不然就会报错,下面会展示这个类的来源。
    在这里插入图片描述
    scan是我们自己定义的变量的名字,可以随意命名。new是类和对象里面要讲到的(后文会更新),此处不做多的解释。至于第三行,也就是定义一个变量去接收第二行定义的整数,此处不做多的讲述,慢慢我们会接触到。

    循环多次输入:
    在这里插入图片描述
    在进行以上操作时,我们就可以进行多次输入啦~~,那我们如何终止输入呢?我们可以用Ctrl+d让循环停下来。(拓展:Ctrl+c中断程序,Ctrl+z文件的结尾(cmd里))

    注意:
    1.代码风格:Java 中更推荐把{ 放在 if / else 同一行. 代码跟紧凑。
    2.分号问题:if 语句的语句体后面不能加分号,否则会使后面代码块脱离if
    3.悬垂 else 问题:由于提高代码可读性和效率,我们应该在每一种else前后都加上{}

    3.2 switch 语句

    基本语法:
    在这里插入图片描述

    执行流程:

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

    面试题:不能做switch的参数的数据类型有哪些?
    float long double boolean

    注意事项:
    1.多个case后的常量值不可以重复
    2.switch的括号内只能是以下类型的表达式:
    基本类型:byte、char、short、int,注意不能是long类型
    引用类型:String常量串、枚举类型

    3.break 不要遗漏, 否则会失去 “多分支选择” 的效果
    4.switch 不能表达复杂的条件
    5.switch 虽然支持嵌套, 但是很丑,一般不推荐~

    四.循环结构

    4.1 while 循环

    语法格式:
    在这里插入图片描述
    while后面必须是布尔表达式。循环条件为 true, 则执行循环语句; 否则结束循环。
    练习:
    1.计算 1 - 100 的和
    在这里插入图片描述
    在这里插入图片描述

    2.计算5的阶乘
    在这里插入图片描述
    在这里插入图片描述

    3.求1!+2!+3!+4!+5!的和
    在这里插入图片描述
    在这里插入图片描述
    那么我详细的代码过程给出来了,就不详细解释了,如果有小伙伴不懂的或者有更好的建议都可以提出来,跟我探讨交流哦~

    注意事项:

    1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
    2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.
    3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.

    4.2 break

    break 的功能是让循环提前结束.
    任何循环遇到break就会让循环结束

    4.3 continue

    continue 的功能是跳过这次循环, 立即进入下次循环.(侧面也说明了break和continue只能在循环里用
    执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句.

    4.4 for 循环

    基本语法:
    在这里插入图片描述

    表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次
    表达式2: 循环条件,满则循环继续,否则循环结束
    表达式3: 循环变量更新方式
    执行过程:①②③④—>②③④—>②③④—>②③④—>②③④—>…—>②为false,循环结束。

    例题:计算 1! + 2! + 3! + 4! + 5!+…+n!
    在这里插入图片描述
    此题的思路是先计算出一个任意数的阶乘,然后外面套一个n的循环。(类似于后嵌套)

    注意事项 :(和while循环类似)

    1. 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
    2. 和 if 类似, for 后面的 { 建议和 while 写在同一行.
    3. 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行.
    4. 和while循环一样,结束单趟循环用continue,结束整个循环用break

    4.5 do while 循环(选学)

    基本语法:
    在这里插入图片描述
    先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。(至少执行一次)

    注意事项:

    1. do while 循环最后的分号不要忘记
    2. 一般 do while 很少用到, 更推荐使用 for 和 while.

    五. 输入输出

    5.1 输出到控制台
    基本语法:
    在这里插入图片描述
    println 输出的内容自带 \n,print 不带 \n
    printf 的格式化输出方式和 C 语言的 printf 是基本一致的.
    那讲到这里我们就可以拓展一下格式化字符串了
    在这里插入图片描述

    5.2 从键盘输入
    在这里插入图片描述
    此处介绍一下next();的作用 --> 遇到空格读取结束(这里Java做的也不是很好)但是我们也可以进行修改,就是把next()改成nextLine();这样读取的数据就是一行的输入数据了。
    使用 Scanner 读取字符串/整数/浮点数。
    在这里插入图片描述
    注意:
    1.当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl +d).
    2.在后续oj题当中,遇到IO类型的算法题,有各种循环输入的要求,后序文章会提及。

    六. 猜数字游戏

    电脑随机生成一个数字让你猜大小,直到猜对为止。
    在这里插入图片描述

    七.练习

    1. 根据年龄, 来打印出当前年龄的人是少年(低于18), 青年(19-28), 中年(29-55), 老年(56以上)
    2. 判定一个数字是否是素数
    3. 打印 1 - 100 之间所有的素数
    4. 输出 1000 - 2000 之间所有的闰年
    5. 输出乘法口诀表
    6. 求两个正整数的最大公约数
    7. 求出0~999之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。)
    8. 写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1
    9. 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。
    10. 独立完成猜数字游戏

    这些题目能有效完善我们初级代码能力,所以做做是很有必要的啦,希望还不会的友友们能一起做一做,不会的也可以找我探讨探讨,一起进步~~

  • 相关阅读:
    Kotlin挂起函数整理-基础
    mysql只copy数据库文件而不copy系统表文件到另一个数据库,新库可以正常使用该库和表吗?
    (转)STR 内核做了什么
    C++入门必备基础知识(下篇)
    【SpringBoot】统一功能处理
    前端人70%以上 不了解的this指向
    电脑重装系统后Win7打印机无法打印该如何处理?
    gazebo各种插件
    Nginx-03- Nginx+Keepalived高可用集群和基本原理
    《传统文化典藏馆》前端模板
  • 原文地址:https://blog.csdn.net/m0_67660672/article/details/126733929