流程控制语句结构

news/2025/1/18 20:15:35/文章来源:https://www.cnblogs.com/rehe/p/18338368

Java三种流程控制语句简介
从结构化程序设计角度出发,一般使用顺序结构、分支结构、循环结构进行程序设计和流程控制。详细的使用方法如下。

顺序结构

​ 顺序结构是程序的基本结构代码会由上而下的进行执行,中途不会出现判断或跳转。

案例:

public class ProcessControl {
public static void main(String[] args) {System.out.println("早上八点起床吃了西红柿鸡蛋面");System.out.println("中午在公司进行了项目需求分析会议修缮的一些程序的BUG、吃了一份可乐鸡饭没有午休");System.out.println("晚上加班到很晚、也许这就是生活吧");System.out.println("回家想想自己的工资,看了看房价。睡意全无,又开始了mysql的优化学习");	
}
}

分支结构

​ 开篇之前先来一个不是笑话的笑话。

  【故事】老婆给当程序员的老公打电话:下班顺路买十个包子,如果看到卖西瓜的,买一个。当晚老公手捧一个包子进了家门。老婆怒道:你怎么只买一个包子?!老公甚恐,喃喃道:因为我真看到卖西瓜的了。分支结构是程序设计中即为常用的。主要用于判断和选择。在Java中使用if 条件语句、switch选择语句进行流程控制。

if 条件语句

if的使用

介绍:可以对程序需要执行的代码进行条件限制。满足条件则执行,不满足则不执行。
语法

if(条件表达式){//满足条件的执行语句
}

花括号中的内容,称为代码块,一个代码块会被当成一个整体来执行。
示例:

//如果年龄大于等于18输出海皮的语句 如果年龄小于18则输出回家学习吧!int age;//大于18age=19;if(age>=18) {System.out.println("快来愉快的玩耍吧!");	}//小于18age = 17; if(age<=18) {System.out.println("回家学习!");	}
if else的使用

​ 满足if里面的内容则执行if花括号内的语句。如果不满足则执行else花括号后面的内容。

语法:

if(条件表达式){//满足条件的执行语句
}else{//不满足条件执行
}

示例:

	//如果年龄大于等于18输出海皮的语句 如果年龄小于18则输出回家学习吧!int age=23;int age2=16;if(age>=18) {System.out.println("快来愉快的玩耍吧!");}else {System.out.println("回家学习吧!");}if(age2>=18) {System.out.println("快来愉快的玩耍吧!");}else {System.out.println("回家学习吧!");}
if else if的使用

​ 满足if里面的内容则执行if花括号内的语句。如果不满足继续判断else if内的条件满足则执行,不满足则继续向下判断,都不满足执行else花括号内的代码。
语法:

if(条件表达式){//满足条件1的 执行语句
}else if{//满足条件2的 执行语句
}else{//不满足以上条件的执行
}

示例:
需求:成绩判断器 90-100优秀 80-89 良好 70-79中等 60-69 及格 60以下 不及格

 //成绩判断器   90-100优秀 80-89 良好 70-79中等 60-69 及格  60以下 不及格if(score>=90) {System.out.println("优秀");			}else if(score>=80){System.out.println("良好");}else if(score>=70){System.out.println("中等");}else if (score>=60) {System.err.println("及格");}else {System.out.println("不及格");}
if条件语句的嵌套

​ if语句可以进行嵌套使用 即if语句内可与包含if语句
需求:百米赛跑案例 当选手赛跑成绩10秒内 可以进入总决赛 ,进入决赛后根据性别 分为男子组和女子组
示例:

	//百米赛跑案例   当选手赛跑成绩10秒内 可以进入总决赛 ,进入决赛后根据性别 分为男子组和女子组double grade = 9.0;int sex=0; //0代表男 1代表女if (grade < 10) {System.out.println("进入决赛");if(sex==0) {System.out.println("进入男子组");}else if(sex ==1 ) {System.out.println("进入女子组");}else {System.out.println("数据有误");}}
判断闰年

1.能被4整除,但不能被100整除,就是闰年;
2.能被400整除,也是闰年
方案一:

	int year =2000;if(year % 4 == 0) {if(year%100 != 0) {System.out.println(year+"是闰年");}else if(year % 400 ==0 ) {System.out.println(year+"是闰年");}else {System.out.println(year+"不是闰年");}}else if(year % 400 ==0 ) {System.out.println(year+"是闰年");}else {System.out.println(year+"不是闰年");}

方案二:

		int year =2000;if( (year%4==0 && year%100 !=0) || year%400==0 ) {System.out.println(year+"是闰年");}else {System.out.println(year+"不是闰年");}

switch选择语句

语法:

switch (key) {case value://执行语句break;default://执行语句break;
}在上面的格式中,switch语句将key的值与每个case中的目标值进行匹配,如果相等,会执行对应case后的语句,如果没找到任何匹配的值,就会执行default后的语句。switch语句中的break关键字的作用是跳出switch语句。

注意事项:
一、key代表的数据类型 只能是 int short byte char String 枚举
二、switch 只能用于做等值判断
三、default 顺序问题 他可以放到最上面的位置 注意放置位置不同会影响我们代码输出
四、default 可以被省略
五、 if 一般用于一定范围内的条件判断 switch 能完成的案例 if都能完成 但是if能完成案例 switch不一定完成 常用分支结构if if

switch (需求值){
case 目标值1:执行语句1break;case 目标值2:执行语句2break;......case 目标值n:执行语句nbreak;default:执行语句n+1break;
}

示例:
需求:超市进行购物大酬宾 购物满199元即可参与抽奖活动 一等奖奖励空调 二等奖奖励电视 三等奖奖励电饭煲 四等奖奖励精品茶具 五等奖奖励抽纸一盒

	// switch选择语句//超市进行购物大酬宾 购物满199元即可参与抽奖活动 一等奖奖励空调 二等奖奖励电视 三等奖奖励电饭煲 四等奖奖励精品茶具 五等奖奖励抽纸一盒 double money = 208.6;//购物费用if(money>=199) {int grade = 4;//奖励等级 switch (grade){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;default:System.out.println("很遗憾您未中奖");break;}System.out.println("欢迎再次回顾!");}else {System.out.println("很抱歉,您购物未满199元不能参与此活动");}

循环结构

为什么使用循环?

​ 假设给予一个需求,输出一个HelloWorld我们可以很轻松的将其输出,如果我们需要输出十个HelloWorld、一万个、十万个乃至更多的HelloWorld时要如何完成呢?
​ 此时我们就需要使用循环来解决问题。

什么是循环?

​ 循环用于处理程序中具有规律性的重复操作。
​ 在Java中有三种循环语句
​ while
​ do-while
​ for

while循环

语法:

while(条件表达式){ // 满足条件,则执行// 迭代语句(退出机制)}
    当条件表达式返回 true 的时候,则可以执行代码块中的内容,在循环体中要有迭代语句,才能让条件中的变量受到控制。执行顺序:先判断,再执行

示例:打印100次while

int i=0;//定义初始变量while(i<100) {		System.out.println("第"+(i+1)+"次"+"HelloWorld");i++;//自加1 操作}

注意事项:
◆while循环 条件满足后 执行{}里面语句
◆书写过程中第一次条件必须满足 如果不满足 循环直接不会执行
◆声明初始变量 在{}中 变量需要更新 要不然会发生死循环情况

do…while循环

语法:

do{//循环操作
}while(循环条件);
    先执行一次do内的循环操作。然后后条件表达式返回 true 的时候,则可以执行do代码块中的内容。执行顺序:先执行,后判断

示例:连续录入学生学号,输入“0”则系统退出

  //输入学生的学号  输入0时退出Scanner scanner =new Scanner(System.in);int id=0;do {System.out.println("请输入学号:");id = scanner.nextInt();System.out.println(id);}while(id!=0);

注意事项:
◆do while 循环特点 先执行 后循环操作
◆do while 无论while中条件是否满足 循环操作至少执行一次

for循环

在这里插入图片描述

语法:

for(初始化参数;条件判断;更新循环变量){//执行语句
}

详解:
for(表达式1;表达式2;表达式3){循环体结构}
表达式1:一般作为循环变量赋初始值;
表达式2:循环继续的条件,即能判断出真假的条件,一般为关系表达式;
表达式3:用于循环变量的的改变,可加,可减。。。

示例:
//打印100次HelloWorld

	for(int i=0;i<100;i++) {System.out.println("第"+(i+1)+"次HelloWorld!");}

//循环录入8们课程的成绩 并求其平均分

	Scanner scanner = new Scanner(System.in);double score=0;double sum = 0;for(int i=0;i<8;i++) {System.out.println("请输入第"+(i+1)+"门课程的成绩:");score = scanner.nextDouble();sum = sum+score;}System.out.println("课程平均成绩为:"+sum/8);

注意事项:
for循环的初始化必须含有;;
无条件判断会造成死循环
循环条件一次不满足就会跳出循环 不会继续下一次循环

break 和 continue

break(中断循环 跳出循环)

语法:

while(){if(){break;//跳出循环}
}
    break通常在循环中与条件语句一起使用

示例:
随机输入10个以内的整数如果遇到0则输出“输入0跳出循环”

	//随机输入10个以内的整数如果遇到0则输出“输入0跳出循环”Scanner scanner = new Scanner(System.in); int num = 0;int i;for ( i = 1; i <=10; i++) {System.out.println("请输入第"+i+"个数:");num = scanner.nextInt();if(num == 0) {System.out.println("输入0跳出循环");break;}}System.out.println("循环结束,你输入了"+i+"次");
continue(跳过一次循环 继续执行下一次循环)

语法:

while(){if(){continue;//跳出本次循环}
}
    continue :只能用在循环里

示例:
求取1-100以内不包含10的和

	//求取1-100以内不包含10的和int sum = 0;	for(int i=1;i<=100;i++) {if(i==10) {continue; //跳出本次循环 本次循环内continue以下的语句不再}sum=sum+i;}System.out.println(sum);

循环嵌套

循环内可以继续嵌套循环
示例:

//使用0打印出一个5行5列的矩形for (int i = 0; i < 5; i++) {for (int j = 0; j < 5; j++) {System.out.print("0");				}System.out.println("0");	}
    往往嵌套三次以下 超过三次会导致代码可读性变差!

循环示例

示例一 、 打印1-100之间的偶数和它们的和
package com.qingsu.basis;public class Loop {
public static void main(String[] args) {//打印1-100之间的偶数 和他们的和int i = 1;int sum = 0;while(i<101) {if(i%2==0) {System.out.println(i);sum = sum+i;}		i++;}System.out.println("1-100内的偶数和为"+sum);}
}
示例二、 打印1-100以内的质数(基础版)

while实现

package com.qingsu.basis;import java.util.Scanner;public class Loop {
public static void main(String[] args) {		//打印输出1-100内的质数//质数(素数)仅可以被1和自身整除的数为质数int num = 2;boolean flag = true;//用于保存是否为素数while (num<=100) {//外层循环 用于实现从2-100 1不是质数int num2 = 2;while(num>num2) {//内层循环用于判断是不是质数if(num%num2 == 0) { 如果能被整除则表明不是质数 不能被整除则表明是质数flag = false;break;}num2++;}if(flag) {System.out.println(num);}num++;flag=true;}	 			
}
}

for实现

package com.qingsu.basis;import java.util.Scanner;public class Loop {
public static void main(String[] args) {		//打印输出1-100内的质数//质数(素数)仅可以被1和自身整除的数为质数boolean flag = true;//用于保存是否为素数for(int i=2;i<=100;i++) {//外层循环 用于实现从2-100 1不是质数	for(int j=2;j<i;j++) {//内层循环用于判断是不是质数if(i%j==0) {flag  = false;break;					}}if(flag) {System.out.println(i);				}flag = true;}	}
}
示例三、录入班级人数和学员成绩,计算班级学员的平均成绩
package com.qingsu.basis;import java.util.Scanner;public class Loop {
public static void main(String[] args) {		//录入班级人数和学员成绩,计算班级学员的平均成绩Scanner scanner = new Scanner(System.in);System.out.println("请输入班级人数:");int num = scanner.nextInt(); int i = 0;double sum = 0;while(num>i) {System.out.println("请输入第"+(i+1)+"位同学的成绩:");double score = scanner.nextDouble();i++;sum = sum+score;					}System.out.println("平均成绩为:"+sum/num);
}
}
示例四、年增月增问题

​ 某景点2016年旅游人次位130万人,每年增长18%,请问按此增长速度,到哪一年旅游人次达到500万人?

package com.qingsu.basis;import java.util.Scanner;public class Loop {
public static void main(String[] args) {//某景点2016年旅游人次位130万人,每年增长18%,请问按此增长速度,到哪一年旅游人次达到500万人?int year = 2016;double num = 1300000;while (5000000>=num) {num = num*1.18;year++;		}System.out.println("第"+year+"年后旅游人数将达到500万人,人数为"+(int)num);	
}
}
示例五、打印九九乘法表
package com.qingsu.basis;import java.util.Scanner;public class Loop {
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+"\t");}System.out.println();}		
}
}

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

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

相关文章

不止于面向对象的SOLID原则

SOLID原则是由人称”鲍勃大叔“的Rober C. Martin所提出来的。他用五个面向对象设计原则的首字母组成了SOLID,并使其得到了广泛传播。这五个原则罗列如下:单一指责原则(Single Responsibility Principle):类的职责应该是单一的。所谓单一,是从变化的维度衡量的,既一个类…

下一代云电脑技术来临,为什么PC Farm才是未来,以ToDesk为例

近年来飞速发展的云电脑技术,正在挤压传统电脑的生存空间。由于用户对电脑计算能力的要求日益增高,而传统电脑往往会受限于硬件性能无法更新,更换花费较高等因素,难以满足用户对高性能电脑的期待。 与此同时,下一代的云电脑技术中PC Farm模式,以其卓越的性能、灵活性和成…

远程控制设备没有屏幕怎么办?ToDesk扩展屏幕性能

当你遇到要远程控制的电脑没有显示屏或屏幕无法打开,只有主机能够正常运行时,这时候该怎么办? 小社长发现ToDesk远程控制软件的虚拟屏功能就能帮你解决此等难题,搭配扩展屏使用还能让你的工作效率更上一层楼! 如何用虚拟屏来帮助没有屏幕的电脑进行远程控制?跟着小社长一…

Langchain-Chatchat3.1——搜索引擎bing与DuckDuckGo

Langchain-Chatchat3.1——搜索引擎bing与DuckDuckGo 1. 前提是咱们的Chatchat服务一起部署好了,可以参考 Langchain-Chatchat3.1版本docker部署流程——知识库问答 2. 搜索引擎DuckDuckGo:该搜索引擎不需要key,但是需要全球上网服务,挂代理。 pip install -U duckduckgo_…

标识符?关键字?

标识符和关键字标识符:java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 关键字:由java工作人员定义的一些具有特殊功能的单词如: 类名 变量名 方法名 1.类名: Hello就是类名 2.方法名: main就是方法名 3.变量名:可由自己定义,比如本人输入的name…

Markdown与数学公式

在写偏理科的文章的时候,多多少少会涉及到一些公式、函数的输入,本篇就来讲讲如何在 Markdown 中书写数学公式。在写偏理科的文章的时候,多多少少会涉及到一些公式、函数的输入,本篇就来讲讲如何在 Markdown 中书写数学公式。 在此之前,我们先介绍下 LaTex 和 MashJax,Ma…

Intellij IDEA--选择圆括号(小括号)的内容的插件

简介 本文介绍Intellij IDEA选择圆括号(小括号)内的内容的插件。本插件支持这些括号: "<>", "[]", "{}", "()"。 Java星球:way2j.com(自学精灵) 问题描述 默认情况下,Idea只能双击大括号(花括号)选中里边的内容。其他的括…

7、31admin total budget开发

远程检查仓库状态 在测试平台部署运行 而不必执着于本地各种配置 如何申请服务,部署运行,在项目的主分支,副分支上运行 基于gitlab批量创建广告 映射(Maps)AdsTypeMap: 将广告类型字符串映射到整型数值,例如“Search Ads”映射到model.AdsTypeSearch的整型表示。CostType…

Python cv2库 批量压缩图片jpg、png 脚本

效果图: (1)压缩前:10.9M (2) 压缩后:1.46M(3) 直接上代码 ,# 设置压缩质量 0-100 ,0最差,100最好compression_params = [int(cv2.IMWRITE_JPEG_QUALITY), 50]import cv2 import osPATH = rF:\aa_jpg # 压缩该路径下的图片,压缩后会保存到原路径def resizeImage(fil…

染色法判定二分图

染色法判定二分图 二分图: 1.当且仅当图中无奇数环 2.能且只能用两种颜色染色#include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N = 100010, M = 200010;int n, m; int h[N], e[M], ne[M], idx; int color[N];//…

一个纯前端实现的头像生成网站

vue-color-avatar —— 一款基于 Vite + Vue3 实现的矢量风格头像的生成器,你可以搭配不同的素材组件,生成自己的个性化头像。大家好,我是 Java陈序员。 今天,给大家介绍一个纯前端实现的头像生成网站。关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超2…

CSS + v-bind

学而不思则罔,思而不学则殆!