Java流程控制

1. 流程控制

  • 在一个程序中,有很多的代码,代码的执行顺序,就是流程。

  • 用于控制代码流程的方式,就是流程控制

  • 流程控制的分类:

    • 顺序结构:代码从上到下,从右到左依次执行。

    • 分支结构:依据一定的条件选择程序执行的路径。

    • 循环结构:重复的执行某一段代码的语法结构。

2. 分支结构

2.1 if语句

if

语法结构:

if(布尔表达式) {执行代码块;int a = 10;
}
if +CRUD 
.....
  • 语法解释:

    • 布尔表达式:判断条件,如果判断为true,则执行大括号内的语句。

    • 执行代码块:满足判断条件后所执行的代码语句。

  • 执行过程

    • 判断布尔表达式是否为true

    • true执行代码块。

    • false直接略过。

  • if…else

  • 语法结构:

  • if(布尔表达式) {执行代码块1;
    } else {执行代码块2;
    }

    语法解释:

  • 布尔表达式:判断条件,如果判断为true,则执行大括号内的语句。

  • 执行代码块1:满足判断条件后所执行的代码语句。

  • 执行代码块2:不满足判断条件后所执行的代码语句。

  • 注意事项:执行代码块1执行代码块2能且仅能执行一块代码。

  • 执行过程

    • 判断布尔表达式是否为true

    • true执行代码块1。

    • false执行代码块2。

  • if…else if…else

    • 语法结构:

    • if(布尔表达式1) {执行代码块1;
      } else if(布尔表达式2) {执行代码块2;
      } else if(布尔表达式3) {执行代码块3;
      } else if(布尔表达式……) {执行代码块……;
      } else if(布尔表达式n) {执行代码块n;
      } else {执行代码块n+1;
      }
      岳小鹏参加Java考试,他和父亲岳不群达成承诺: 如果:
      成绩为100分时,奖励一辆BMW; 成绩为(80,99]时,奖励一台iphone xs max; 当成绩为[60,80]时,奖励一个 iPad; 其它时,什么奖励也没有。 请从键盘输入岳小鹏的期末成绩,并加以判断class IfExam {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入岳小鹏期末成绩:(0-100)");int score = scan.nextInt();if (score == 100) {System.out.println("奖励一辆BMW");//be my wife!  BMW <---> MSN} else if (score > 80 && score <= 99) {System.out.println("奖励一台iphone xs max");} else if (score >= 60 && score <= 80) {System.out.println("奖励一个iPad");} else {System.out.println("什么奖励也没有");}}
      }

2.2 switch语句

3. 循环结构

3.1 while循环

  • 语法结构:

  • switch(表达式变量) {case 常量1 :执行代码块1;break;case 常量2 :执行代码块2;break;case 常量…… :执行代码块……;break;case 常量n :执行代码块n;break;default:执行代码块n+1;
    }

  • 语法解释:

    • 表达式变量:需要判断的值,与各个常量进行匹配。

    • 常量:满足的条件。

    • 执行代码块:满足条件后,所执行的代码块。

  • 执行过程

    • 表达式变量与常量进行匹配。

    • 如果有匹配到,执行对应的代码块内容。

    • 遇到break就终止代码执行。

    • 如果没匹配到,执行default下代码块的内容。

    • // 四季交替
      class SwitchTest {public static void main(String[] args) {String season = "winter";switch (season) {case "spring":System.out.println("春暖花开");break;case "summer":System.out.println("夏日炎炎");break;case "autumn":System.out.println("秋高气爽");break;case "winter":System.out.println("冬雪皑皑");break;default:System.out.println("季节输入有误");break;}}
      }

      注意事项:如下的两种情况都编译不通过

    • /*boolean isHandsome = true;switch(isHandsome){case true:System.out.println("我好帅啊~~~");break;case false:System.out.println("我好丑啊~~~");break;default:System.out.println("输入有误~~~");}*///情况二/*int age = 10;switch(age){case age > 18:System.out.println("成年了");break;default:System.out.println("未成年");}*/

    • 常量类型:(表达式中的6种类型)

      • Jdk1.5之前:byteshortintchar

      • Jdk1.5:枚举类型

      • Jdk7:String

    • 常量值不能重复。

    • case后面只能跟常量,不能跟变量。

    • 每个case的语句体后面,一定要跟上一个break语句,否则就无法结束switch语句,并且发生case穿透。

    • default语句:可以写在任意位置,无论写在什么位置,都是最后去匹配;也可以不写,如果不写,就有可能一个语句都执行不到。建议把default语句加上。

  • /*
    例题:对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。说明:如果switch-case结构中的多个case的执行语句相同,则可以考虑进行合并。
    */
    class SwitchCaseTest1 {public static void main(String[] args) {/*int score = 78;switch(score){case 0:case 1:case 2:...case 100:	}*//*int score = 78;if(score >= 60){	}else{	}*/int score = 78;switch(score / 10){case 0:case 1:case 2:case 3:case 4:case 5:System.out.println("不及格");break;case 6:case 7:case 8:case 9:case 10:System.out.println("及格");break;}//更优的解决方案:switch(score / 60){case 0:System.out.println("不及格");break;case 1:System.out.println("及格");break;}}
    }

    2.3 if语句与switch语句的区别

  • 相同点:都是进行判断,都可以表达分支结构。

  • 不同点:

    • if更加灵活,出现率较高,switch出现率较低。

    • switch的所有语句都可以使用if进行替代。

    • if语句更多的是做一些连续性区间值的判断,而switch语句无法做到。

    • if语句每次都需要获取表达式的值,而switch只获取一次表达式的值,所以switch的效率较高一些。

  • 定义:重复的执行某一件事。

  • 语法结构:

  • 初始化变量;
    while(布尔表达式) {执行代码块;初始化变量的自增;
    }
  • 注意:避免死循环。

  • 语法解释:

    • 初始化变量:声明一个变量,用于记录循环次数,只执行一次。

    • 布尔表达式:进入循环的条件。

    • 执行代码块:需要重复执行的代码块。

    • 初始化变量的自增

  • 执行过程:

  • 初始化变量。

  • 计算布尔表达式,如果为false则直接结束循环。

  • true进入循环,执行代码块

  • 执行初始化变量的自增。

  • 回到第二步

  • class WhileTest {public static void main(String[] args) {//遍历100以内的所有偶数int i = 1;while (i < 100) {if (i % 2 == 0) {System.out.println(i);}i++;}//出了while循环以后,仍可以调用。System.out.println(i);//101}
    }

3.2 do…while循环

  • 语法结构:

  • 初始化变量;
    do {执行代码块;初始化变量的自增;
    } while(布尔表达式);

  • 语法解释:

    • 初始化变量:声明一个变量,用于记录循环次数,只执行一次。

    • 执行代码块:需要重复执行的代码块。

    • 初始化变量的自增

    • 布尔表达式:进入循环的条件。

  • 执行过程:

    1. 初始化变量。

    2. 进入循环,执行循环代码块。

    3. 初始化变量的自增。

    4. 计算布尔表达式,如果为false则直接结束循环。

    5. true则回到第二步。

public class WhileDemo {public static void main(String[] args) {//遍历100以内的偶数,并计算所有偶数的和及偶数的个数int sum = 0;int total = 0;int i = 0;do {if (i % 2 == 0) {sum += i;total++;}i++;}while (i <= 100);System.out.println("1-100偶数和是:" + sum);System.out.println("1-100偶数个数是:" + total);}
}

3.3 for循环

  • 语法结构:

  • for(初始化变量;布尔表达式;初始化变量的自增) {执行代码块;
    }
  • 语法解释:

    • 初始化变量:声明一个变量,用于记录循环次数,只执行一次。

    • 布尔表达式:进入循环的条件。

    • 初始化变量的自增

    • 执行代码块:需要重复执行的代码块。

  • 执行过程:

    1. 初始化变量。

    2. 计算布尔表达式,如果为false则直接结束循环。

    3. true则执行代码块。

    4. 初始化变量的自增。

    5. 回到第二步。

  • /*
    编写程序从1循环到520,并在每行打印一个值,
    另外在每个3的倍数行上打印出“I”,
    在每个5的倍数行上打印“Miss”,
    在每个7的倍数行上打印输出“You”。
    */
    class ForTest1 {public static void main(String[] args) {for (int i = 1; i <= 520; i++) {System.out.print(i + "  ");if (i % 3 == 0) {System.out.print("I");}if (i % 5 == 0) {System.out.print("Miss");}if (i % 7 == 0) {System.out.print("You");}//换行System.out.println();}}
    }

    3.4 三种循环语句的区别

  • do…while语句和其他两种语句的区别:do…while语句至少可以执行一次,另外两种有可能一次都执行不了。

  • while语句和for的区别:

  • 代码层面:while语句声明的初始化变量,在while结束之后,还能继续使用;for中声明的初始化变量,在for结束之后,就无法使用了。

  • 设计层面:while语句一般用于描述相对模糊的范围,其他的条件;for用于描述相对准确,知道循环次数的循环。

3.5 跳转语句

  • 跳转语句:在循环的循环体语句中,结束循环,控制循环。

  • continue语句:结束本次循环,进入下次循环。

  • break语句:结束当前循环。

  • return语句:结束当前的方法。

3.6 循环的嵌套

在一次大的循环中,每次的循环内容(循环体)又是一个循环的操作,就需要在大循环中,定义一个小循环。称为循环的嵌套。

/*
嵌套循环的应用1:九九乘法表
1 * 1 = 1
1 * 2 = 2  2 * 2 = 4
。。。
1 * 9 = 9 。。。 9 * 9 = 81*/
class NineNineTable {public static void main(String[] args) {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {System.out.print(j + " * " + i + " = " + (i * j) + "  ");}System.out.println();}}
}

4.Scanner类

  • Scanner使用的基本步骤

    • 导包

    • 实例化

    • 接收数据

    • /*
      如何从键盘获取不同类型的变量:需要使用Scanner类
      具体实现步骤:
      1.导包 import java.util.Scanner;
      2.Scanner 的实例化:Scanner scanner = new Scanner(System.in);
      3.调用Scanner类的相关方法,来获取指定类型的变量
      4.需要根据相应的方法,来输入指定类型的值,如果输入的数据类型与要求的数据类型不匹配时,
      会报异常:InputMismatchException 导致程序终止。*/
      import java.util.Scanner;public class JavaDemo {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入你的姓名:");String name = scanner.next();System.out.println(name);System.out.println("请输入你的年龄:");int age = scanner.nextInt();System.out.println(age);System.out.println("请输入你的体重:");double weight = scanner.nextDouble();System.out.println(weight);System.out.println("你结婚了吗true/false:");boolean isMarried = scanner.nextBoolean();System.out.println(isMarried);System.out.println("请输入你的性别:");String gender = scanner.next();char genderChar = gender.charAt(0);System.out.println(genderChar);System.out.println("输入你的爱好");String hobby = scanner.nextLine();System.out.println(hobby);}
      }nextLine()方法是读取一整行,以一个回车符作为结束标记停止扫描next() / nextInt() / nextDouble()等方法是,读取到第一个结束符【空格、回车、Tab键】作为结束标记停止扫描

5. Debug

  • Debug调试程序:

  • 可以让代码逐行执行,查看代码执行的过程,调试程序中出现的bug

  • 使用方式:

    • 在行号的右边,鼠标左键单击,添加断点(每个方法的第一行,哪里有bug添加到那里)

    • 右键,选择Debug执行程序

    • 程序就会停留在添加的第一个断点处

    • 执行程序

    • f8:逐行执行程序(不进方法)

    • f7:进入到方法中(蓝色==>进入自定义方法)

    • f7:进入到方法中(红色==>进入j ava类库方法和自定义方法 )

    • shift+f8:跳出方法

    • f9:跳到下一个断点,如果没有下一个断点,那么就结束程序

    • F10:回到断点所在位置

    • 重新运行

    • 下一断点

    • 暂停

    • ctrl+f2:退出debug模式,停止程序

    • 查看所有断点

    • 禁用断点

    • Console:切换到控制台

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

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

相关文章

OpenAI的Sora的优点

OpenAI的Sora的优点主要包括以下几个方面&#xff1a; 1.强大的视频生成能力&#xff1a;Sora可以根据用户的文本提示或静态图像生成高质量、逼真的视频。它继承了DALL-E 3的画质和遵循指令能力&#xff0c;能够生成具有多个角色、包含特定运动的复杂场景&#xff0c;几乎达到…

Unity3d Mesh篇(一)— 创建简单三角面

文章目录 前言一、Mesh组成二、使用步骤三、效果四、总结 前言 Mesh&#xff08;网格&#xff09;是一种常用的3D图形表示方法&#xff0c;它由顶点&#xff0c;法线&#xff0c;UV 坐标&#xff0c;和三角形等组成。您可以使用 Mesh 类的方法来创建或修改网格&#xff0c;也可…

k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(三)

3.19.切换RKE用户&#xff0c;并做免密登录&#xff08;三台机器相互免密&#xff09; su rke cd~ ssh-keygen[rkemaster.ssh]$ssh-copy-id rkeslaver2 [rkemaster.ssh]$ssh-copy-id rkeslaver1 [rkemaster.ssh]$ssh-copy-id rkemaster3.20.搭建RKE集群 为了方便理解&#…

office的excel中使用,告诉我详细的解决方案,如何变成转化为金额格式

在Office的Excel中&#xff0c;如果你想将名为"MEREFIELD"的公式结果转换为金额格式&#xff0c;你可以遵循以下详细步骤来实现&#xff1a; 书写MEREFIELD公式&#xff1a; 首先&#xff0c;在Excel中输入或确认你的MEREFIELD公式。例如&#xff0c;假设这个公式是用…

基于STL的演讲比赛流程管理系统(个人学习笔记黑马学习)

1、演讲比赛程序需求 1.1比赛规则 学校举行一场演讲比赛&#xff0c;共有12个人参加。比赛共两轮&#xff0c;第一轮为淘汰赛&#xff0c;第二轮为决赛。每名选手都有对应的编号&#xff0c;如 10001~10012比赛方式:分组比赛&#xff0c;每组6个人;第一轮分为两个小组&#xff…

SpringBoot 条件注解一览无余

文章目录 条件注解是什么有哪些条件注解类条件注解Bean条件注解属性条件注解资源条件注解web应用条件注解SpEL( Spring Expression Language )表达式条件注解其他条件注解 总结 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍…

Java中的控制语句

控制语句包括3类&#xff1a;选择语句&#xff08;if语句&#xff0c;switch语句&#xff09;&#xff0c;循环语句&#xff08;for循环&#xff0c;while循&#xff0c;do..while..循环&#xff09;&#xff0c;转向语句&#xff08;break&#xff0c;continue&#xff0c;ret…

四、通信和网络安全—网络通信模型(CISSP)

目录 1.OSI七层参照模型 2.OSI七层模型与TCP/IP网络模型的关系 2.1 网络层(Application Layer)

Flutter使用问题整理

前言 写这篇文章是为了记录平时在使用flutter时遇到的问题&#xff0c;及解决方案&#xff0c;方便再次遇到时能够快速解决。 问题及解决 问题1 真机运行项目&#xff0c;在构建时提示 Running Gradle task assembleDebug... 41.8s [!] App r…

OpenCV中inRange函数

在OpenCV中&#xff0c;inRange函数用于根据颜色范围从图像中提取特定的颜色区域。这个函数检查输入图像中的每个像素&#xff0c;如果像素值位于指定的范围内&#xff0c;则在输出图像&#xff08;或掩码&#xff09;中对应位置的像素被设置为白色&#xff08;或者说是255&…

基于STM32的光照检测系统设计

基于STM32的光照检测系统设计 摘要: 随着物联网和智能家居的快速发展,光照检测系统在智能环境控制中扮演着越来越重要的角色。本文设计了一种基于STM32的光照检测系统,该系统能够实时检测环境光强度,并根据光强度调节照明设备,实现智能照明控制。本文首先介绍了系统的总体…

消息队列-RabbitMQ:MQ作用分类、RabbitMQ核心概念及消息生产消费调试

1、MQ 的相关概念 1&#xff09;什么是 MQ MQ (message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是 message 而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在互…

Delphi v11 安卓权限申请

问题 Delphi 10.4 的安卓权限申请代码&#xff0c;在 Delphi 11 下面编译无法通过。 原因 原因是里面有几个变量类型的定义有所不同。 procedure TDmBLE.RequestPermissionsResult(Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TAr…

基于python+django+vue.js开发的医院门诊管理系统/医疗管理系统

功能介绍 平台采用B/S结构&#xff0c;后端采用主流的Python语言进行开发&#xff0c;前端采用主流的Vue.js进行开发。 功能包括&#xff1a;医生管理、科室管理、护士管理、住院管理、药品管理、用户管理、日志管理、系统信息模块。 源码地址 https://github.com/geeeeeee…

Vue报错,xxx is defined #变量未定义

vue.js:5129 [Vue warn]: Error in v-on handler: "ReferenceError: count is not defined" 浏览器将这个变量 当做全局变量了&#xff0c;事实上它只是实例中的变量 加上this指定&#xff0c;是vue实例中的变量

Itext生成pdf文件,html转pdf时中文一直显示不出来

之前使用freemark模板渲染ftl页面,转出的pdf中&#xff0c;css2有些样式好像不支持&#xff0c;比较常用的居中样式都没有效果&#xff0c;text-align:center 改造成使用html页面来转pdf&#xff0c;css2的样式可以生效,itext是不支持css3的弹性布局的ITextRenderer pdfRendere…

AI之Sora:Sora(文本指令生成视频的里程碑模型)的简介(能力/安全性/技术细节)、使用方法、案例应用之详细攻略

AI之Sora&#xff1a;Sora(文本指令生成视频的里程碑模型)的简介(能力/安全性/技术细节)、使用方法、案例应用之详细攻略 导读&#xff1a;Sora 是OpenAI研发的一个可以根据文字描述生成视频的AI模型。它的主要特性、功能以及OpenAI在安全和应用方面的策略的核心要点如下所示&a…

分布式锁的应用场景及实现

文章目录 分布式锁的应用场景及实现1. 应用场景2. 分布式锁原理3. 分布式锁的实现3.1 基于数据库 分布式锁的应用场景及实现 1. 应用场景 电商网站在进行秒杀、特价等大促活动时&#xff0c;面临访问量激增和高并发的挑战。由于活动商品通常是有限库存的&#xff0c;为了避免…

MySQL 基础知识(十)之 MySQL 架构

目录 1 MySQL 架构说明 2 连接层 3 核心业务层 3.1 查询缓存 3.2 解析器 3.3 优化器 3.4 执行器 4 存储引擎层 5 参考文档 1 MySQL 架构说明 下图是 MySQL 5.7 及其之前版本的逻辑架构示意图 MySQL 架构大致可分为以下三层&#xff1a; 连接层&#xff1a;负责跟客户…

[oeasy]python0007_ print函数_字符串_display_电传打字机_程序员的浪漫

你好世界 &#x1f94a; 回忆上次内容 上次 想输出 Hello world&#xff01;据说是程序猿的浪漫 键盘按键作用↑上一条指令↓下一条指令←光标 向左移动 一格→光标 向右移动 一格ctrl a光标 移动到开头ctrl e光标 移动到结尾 了解到 字符串 就是 给一串字符 两边加引号…