【Java|基础篇】逻辑控制-顺序结构、分支结构和循环结构

简介: 顺序结构是指代码按照从上往下的顺序依次执行,分支结构是选择语句是条件成立时,才会执行的语句.共有三种.分为是if ,if else和if else if else

顺序结构


顺序结构是指代码按照从上往下的顺序依次执行


分支结构


选择语句是条件成立时,才会执行的语句.共有三种.分为是if ,if else和if else if else

if单分支语句

// 语法

if (条件语句){

条件为true时 执行的代码

}

注:如果if里面只有一条要执行的语句的话,{} 可以不加,但建议还是加上去.

if 单分支语句执行流程图

2.png

示例:

public static void main(String[] args) {

System.out.println("成绩等级评测");

int a = 61;

if (a >= 60){

 System.out.println("成绩及格");

}

System.out.println("评测完毕");

}

/*

输出结果:

成绩等级评测

a的成绩及格

评测完毕

*/    


if else双分支语句


// 语法:

if (条件语句){

条件判断为true时 执行的代码

}else {

条件判断为false时 执行的代码

}

if else双分支语句的执行流程:

3.png

示例:

public static void main(String[] args) {

System.out.println("成绩等级评测");

int a = 61;

if (a >= 60){

 System.out.println("成绩及格");

}else{

 System.out.println("成绩为不合格");

}

System.out.println("评测完毕");

}

/*

输出结果:

成绩等级评测

a的成绩及格

评测完毕

*/

可以看到else里面的语句并没有被执行,是因为满足了if的条件判断语句,所以执行了if里面的语句.else语句只有在if条件语句不满足时才会执行,


if else if else多分支语句


// 语法:

if (条件语句1){

条件为true时 执行的代码

}else if(条件语句2){

条件为true时 执行的代码

}else if(条件语句3){

条件为true时 执行的代码

//else if语句可以有多个,此处只列出了两个

}else{

以上条件均不满足时,执行此处的代码

}

if else if else多分支语句的执行流程

4.png


还是刚才的示例,如果再细分一下,分数[0,60)为不合格,[60,75)为合格,[75,90)为良好,[90,100]为优秀.那么此时单分支和双分支就不合适了.这是就要使用多分支语句了.

示例:

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.print("请输入你的分数:");

   int a = scanner.nextInt();

System.out.println("成绩等级评测");

if (a < 60){

 System.out.println("成绩不及格");

}else if(a < 75){

 System.out.println("成绩及格");

}else if (a < 90) {

 System.out.println("成绩良好");

}else{

 System.out.println("成绩优秀");

   }

   System.out.println("评测完毕");

}

注:此处的写法有很多.我这里的写法也不一定是最好的.

此时就可以进行输入分数进行评测了.来看演示结果:

5.png

这里的结果为"成绩良好"说明进入到了第二else if语句,因为if语句和else if中的条件语句均不满足, 虽然写着是a < 90,但实际上表示的是a >=75 && a < 90,这里需要注意

if else if else 里面是可以相互嵌套的,但是最好不要嵌套的过多,可读性不好


switch语句


switch (表达式){

case 常量值1:

 执行的代码

 break;

case 常量值2:

 执行的代码

 break;

case 常量值3:

 执行的代码

 break;

...

default: // 其它的情况

 执行的代码

}

执行流程:

1.先计算表达式的值

2.和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束

3.当表达式的值没有与所列项匹配时,执行default

  public static void main(String[] args) {

       Scanner scanner = new Scanner(System.in);

       int day = scanner.nextInt();

       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("输入错误!");

       }

   }

注意:

多个case后的常量值不可以重复

switch 不能表达复杂的条件

break 不要遗漏, 否则会失去 "多分支选择" 的效果

default与else类似,都是前面条件都不满足时执行

switch中的最后一个语句可以不加break

运行结果:

6.png7.png

如果没有break,它就会在满足的条件的地方继续往后面执行,直到遇到break或者执行完后面所有代码


循环语句


循环语句有for循环,while循环和do while循环

在循环中会有三个表达式:

表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次

表达式2: 循环条件,满则循环继续,否则循环结束

表达式3: 循环变量更新方式

下面会对这些内容一一介绍


for循环


// 语法

for(表达式1;布尔表达式2;表达式3){

循环语句;

}

for循环的执行流程图:

8.png

举个简单的例子,打印从1到5的数字:

 public static void main(String[] args) {

       for (int i = 0; i < 5; i++) {

           System.out.println(i+1);

       }

   }

   // 输出结果为 1~5

这里的写法有很多.

i是从0开始的,第一次i等于0,对i进行判断,小于5.执行循环体.然后执行i++.继续i进行判断.然后循环往复.直到i>=5.不满足条件.循环结束

大家只要掌握一种循环,学习另外两种循环就很容易了.


while循环


// 语法

while(循环条件){

循环语句

}

// 如果循环条件true,就会执行循环语句.

// 循环条件为false时,结束循环

在while循环中,表达式1一般写在while循环的前面,而表达式3写在循环语句中.


do while循环


// 语法

do{

循环语句;

}while(循环条件);

与while循环中相同,表达式1一般写在do的前面,而表达式3写在循环语句中.


continue


continue的作用: 跳过本次循环,直接进入下一次循环

如果我想要打印[0,100)之间所有的奇数,用continue就可以这样写

   public static void main(String[] args) {

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

           if (i % 2 == 0){

               continue;

           }else {

               System.out.println(i);

           }

       }

   }

如果i对2取余结果等于0,说明是偶数,则用continue跳过本次循环.否则就打印i的值


break


break的作用: 结束当前循环

例如:如果要判断arr数组中是否有偶数,如果不是偶数,就打印数组对应下标的值.如果是偶数,则结束循环

代码:

  public static void main(String[] args) {

       int[] arr = {1,3,5,6,7,9};

       for (int i = 0; i < arr.length; i++) {

           if (arr[i] % 2 == 0){

               System.out.println("arr中有偶数!");

               break;

           }

           System.out.print(arr[i]+" ");

       }

   }

   // 输出结果:

   // 1 3 5 arr中有偶数!

在arr[i]等于6时,for循环里面的if语句的条件成立,就会打印arr中有偶数!执行break退出循环


总结


本篇文章主要讲解了顺序结构,逻辑结构和循环结构.还有continue和break这两个关键字.

思维导图如下:


9.png9.png

9.png

相关文章
|
2月前
|
安全 Java
Java中的Switch表达式:更简洁的多路分支
Java中的Switch表达式:更简洁的多路分支
451 211
|
3月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
|
7月前
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
230 0
|
7月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
7月前
|
传感器 安全 Java
《从头开始学java,一天一个知识点》之:循环结构:for与while循环的使用场景
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白
210 22
|
7月前
|
传感器 监控 Java
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
288 5
|
11月前
|
JSON Java 程序员
Java|如何用一个统一结构接收成员名称不固定的数据
本文介绍了一种 Java 中如何用一个统一结构接收成员名称不固定的数据的方法。
134 3
|
存储 算法 Java
🚀Java零基础-顺序结构详解 🚀
【10月更文挑战第11天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
160 6
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
245 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
Java C语言
【一步一步了解Java系列】:探索Java逻辑控制
【一步一步了解Java系列】:探索Java逻辑控制
81 1