【JavaSE】逻辑控制语句

news/2024/5/5 14:33:51/文章来源:https://blog.csdn.net/m0_51064412/article/details/129270754

文章目录

  • 一. 顺序结构
  • 二. 分支结构
    • 1. if 语句
    • 2. switch 语句
    • 3、循环结构
      • 3.1 while 循环
      • 3.2 do while 循环
      • 3.3 for 循环
      • 3.4 break 和 continue
  • 三. 输入输出
    • 1. 输出到控制台
    • 2. 从键盘输入

一. 顺序结构

顺序结构比较简单,即程序按照代码书写的顺序一行一行执行下去。

如果调整代码的书写顺序,则执行顺序也发生变化:

在这里插入图片描述

二. 分支结构

1. if 语句

if 语句的基本语法形式包括以下三种:

在这里插入图片描述

代码示例

1、判定一个数字是奇数还是偶数

public static void main(String[] args) {int num = 13;if (num % 2 == 0) {System.out.println("偶数");} else {System.out.println("奇数");}
}

2、判定一个整数是正数还是负数

public static void main(String[] args) {int num = -10;if (num > 0) {System.out.println("num 是正数");} else if (num < 0) {System.out.println("num 是负数");} else {System.out.println("num 是0");}
}

3、判定某一年份是否是闰年

public static void main(String[] args) {int year = 2023;if (year%4 == 0 && year%100 != 0 || year%400 == 0) {System.out.println("是闰年");} else {System.out.println("不是闰年");}
}

注意事项

1、悬垂 else 问题

  • if / else 语句中可以不加花括号,此时只能匹配一条语句
    在这里插入图片描述
  • 不加花括号时 else 总是和最近的 if 匹配
    在这里插入图片描述

2、代码风格问题
在这里插入图片描述

3、分号问题

此处多写了一个分号,导致分号成为了 if 语句的语句体,而 { } 中的代码已经成为了和一个 if 无关的代码块,此时不论 if 成立于否 { } 代码块里的代码都会执行:

int x = 20;
if (x == 10); {System.out.println("hehe");
}
// 运行结果
hehe

2. switch 语句

语法格式如下:

switch(整数|枚举|字符|字符串) {case 内容1: {内容满足时执行语句;[break;]}case 内容2: {内容满足时执行语句;[break;]}...default: {内容都不满足时执行语句;[break;]}
}

几点说明

  • 根据 switch 中值的不同,会执行对应的 case 语句。遇到 break 就会结束该 switch 语句。
  • 如果 switch 中的值没有匹配的 case,就会执行 default 中的语句。
  • 建议一个 switch 语句最好都要带上 default
  • 注意 long、float、double 和 boolean 这几个基本类型的值不能做 switch 的参数。

代码示例

根据 day 的值输出星期几

int day = 3;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;}
}

3、循环结构

3.1 while 循环

循环条件为 true,则执行循环语句,否则结束循环。语法格式如下:

while(布尔表达式){循环语句;
}

注意事项

  • 和 if 类似,while 下面的语句可以不写 { } ,但是不写的时候只能匹配一条语句。建议还是加上 { }
  • 和 if 类似,while 后面的 { 建议和 while 写在同一行

代码示例

1、打印 1 - 10 的数字

int num = 1;
while(num <= 10){System.out.println(num++);
}

2、计算 1 - 100 的和

int num = 1;
int sum = 0;
while(num <= 100){sum += num;num += 1;
}
System.out.println(sum);

3、计算 5 的阶乘

int num = 1;
int ret = 1;
while(num <= 5){ret *= num;num += 1;
}
System.out.println(ret);

4、计算 1! + 2! + 3! + 4! + 5!

int num = 1;
int sum = 0;
// 外层循环求阶乘的和
while(num <= 5){// 那内层循环求每一个数的阶乘int tmp = 1;int fac = 1;while(tmp <= num){fac *= tmp;tmp += 1;}sum += fac;num += 1;
}
// 最后输出结果
System.out.println(sum);

3.2 do while 循环

语法格式如下,注意最后 while 后面要加个分号

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

do while 不论条件成立与否,必定先执行一次循环语句,再判定循环条件:

在这里插入图片描述

3.3 for 循环

语法格式如下:

for(初始语句; 循环条件; 更新语句) {循环体;
}

相比于 while 循环,for 循环将初始语句、循环条件 和 更新语句合并在一起,这样写代码时不容易遗漏。

注意事项

  • 和 if 类似,for 下面的语句可以不写 { } ,但是不写的时候只能支持一条语句。建议还是加上 { }。
  • 和 if 类似,for 后面的 { 建议和 while 写在同一行。
  • 建议有确定的循环次数时用 for;必须先执行一次循环体时用 do while;其他情况用 while。

代码示例

1、打印 1 - 10 的数字

for(int i = 0; i <= 10; ++i) {System.out.println(i);
}

2、计算 1 - 100 的和

int sum = 0;
for(int i = 0; i <= 100; ++i) {sum += i;
}
System.out.println(sum);

3、计算 5 的阶乘

int ret = 1;
for(int i = 1; i <= 5; ++i){ret *= i;
}
System.out.println(ret);

4、计算 1! + 2! + 3! + 4! + 5!

int sum = 0;
for(int i = 1; i <= 5; ++i){int fac = 1;for(int j = 1; j <= i; ++j){fac *= j;}sum += fac;
}
System.out.println(sum);

3.4 break 和 continue

break:执行此语句时,退出匹配最近的循环。

continue:执行此语句时,会立刻进入下次循环(判定循环条件)。

注意:break 和 continue 都必须用在循环中【特殊:beak 还可以用在 switch 中】,二者不适用于 if 语句。

三. 输入输出

1. 输出到控制台

Java 中常用输出语句有以下三种形式:

System.out.print(msg);  // 输出一个字符串, 不带换行
System.out.println(msg);// 输出一个字符串, 带换行
System.out.printf(format, msg);// 格式化输出

说明:

  • println 输出的内容自带 \n,print 不带 \n
  • printf 的格式化输出方式和 C 语言的 printf 是基本一致的

2. 从键盘输入

我们在做 OJ 时经常要用到从键盘输入 n 组数据,模板大致如下:

在这里插入图片描述

注意事项

  • 使用 Scanner 需要导入 util 包
  • 当循环输入多个数据的时候,使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z,Linux / Mac 上使用 ctrl +d)

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

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

相关文章

BS系统中的安全方案(SSO和Oauth2认证,数据加密)

摘要用户用浏览器打开网站&#xff0c;DNS会根据域名找到相应的服务器IP给到浏览器&#xff0c;仅接着用户的浏览器会与服务器建立连接&#xff0c;通过网路上的各个设备(交换机、路由器、基站、光纤等)&#xff0c;将服务器上的数据发送到用户的电脑上&#xff0c;在浏览器里呈…

函数式编程:Lambda 表达式

函数式编程&#xff1a;Lambda 表达式 每博一文案 曾经读过的依然令我感动的句子&#xff0c;生活总是不如意&#xff0c;但往往是在无数痛苦中&#xff0c;但往往是在无数痛苦中&#xff0c;在重重矛盾 和艰难中才能成熟起来&#xff0c;坚强起来&#xff0c;爱情啊&#xf…

EXCEL里的各种奇怪计算问题:数字后面自动多了 0.0001, 数字后面位数变成000,以及一些取整,数学函数

1 公式计算后的数&#xff0c;用只粘贴数值后&#xff0c;后面自动多了 0.0001&#xff0c;导致不再是整数的问题 问题入戏 见第1个8400&#xff0c;计算时就出现了问题&#xff0c;按正常&#xff0c;这里8400应该是整数&#xff0c;而不应该带小数&#xff0c;但是确实就计…

vmware虚拟机与树莓派4B安装ubuntu1804 + ros遇到的问题

如题所示&#xff0c;本人在虚拟机上安装ubuntu1804&#xff0c;可以很容易安装&#xff0c;并且更换系统apt源和ros源&#xff0c;然后安装ros&#xff0c;非常顺利&#xff0c;但是在树莓派4B上安装raspiberry系统就遇到了好多问题。 树莓派我烧录的是这个镜像&#xff1a;ub…

k8s-Kubernetes集群部署

文章目录前言一、Kubernetes简介与架构1.Kubernetes简介2.kubernetes设计架构二、Kubernetes集群部署1.集群环境初始化2.所有节点安装kubeadm3.拉取集群所需镜像3.集群初始化4.安装flannel网络插件5.扩容节点6.设置kubectl命令补齐前言 一、Kubernetes简介与架构 1.Kubernetes…

L - Let‘s Swap(哈希 + 规律)

2023河南省赛组队训练赛&#xff08;四&#xff09; - Virtual Judge (vjudge.net) 约瑟夫最近开发了一款名为Pandote的编辑软件&#xff0c;现在他正在测试&#xff0c;以确保它能正常工作&#xff0c;否则&#xff0c;他可能会被解雇!Joseph通过实现对Pandote上字符串的复制和…

断点调试(debug)

目录 F8案例 ​编辑 debug过程中报错 ​编辑用debug查看方法源码 一层一层查看 Arrays.sort()方法 F9 DebugExercise 介绍&#xff1a;断点调试是指在程序的某一行设置一个断电&#xff0c;调试时&#xff0c;程序运行到这一行就会停住&#xff0c;然后可以一步步往下调试…

项目实战典型案例17——环境混用来带的影响

环境混用来带的影响一&#xff1a;背景介绍背景出现的事故二&#xff1a;思路&方案环境混用的危害如何彻底避免环境混用的问题四&#xff1a;总结五&#xff1a;升华一&#xff1a;背景介绍 本篇博客是对对项目开发中出现的环境混用来带的影响进行的总结并进行的改进。目的…

JAVA后端部署项目三步走

1. JAVA部署项目三步走 1.1 查看 运行的端口 lsof -i:8804 &#xff08;8804 为端口&#xff09; 发现端口25111被监听 1.2 杀死进程,终止程序 pid 为进程号 kill -9 pid 1.3 后台运行jar包 nohup java -jar -Xms128M -Xmx256M -XX:MetaspaceSize128M -XX:MaxM…

基于半车悬架的轴距预瞄与轴间预瞄仿真对比

目录 前言 1. 半车悬架模型 2.轴距预瞄(单点预瞄)和轴间预瞄(两点预瞄)原理与仿真分析 2.1轴距预瞄(单点预瞄) 2.1.1预瞄原理 2.2.轴间预瞄(两点预瞄) 2.2.1预瞄原理 2.3仿真分析 3.总结 前言 对于悬架而言&#xff0c;四个车轮实际的输入信息是受到前后延时以及左右相…

Jetpack Compose 中的重组作用域和性能优化

只有读取可变状态的作用域才会被重组 这句话的意思是只有读取 mutableStateOf() 函数生成的状态值的那些 Composable 函数才会被重新执行。注意&#xff0c;这与 mutableStateOf() 函数在什么位置被定义没有关系。读取操作指的是对状态值的 get 操作。也就是取值的操作。 从一…

路由协议(OSPF、ISIS、BGP)实验配置

目录 OSPF基础实验 建立OSPF邻居 配置虚连接 配置接口的网络类型 配置特殊区域 配置路由选路 配置路由过滤 ISIS基础实验配置 配置ISIS邻居建立 配置认证 配置路由扩散 配置路由过滤 配置定时器 BGP基础实验配置 建立BGP对等体 建立IBGP对等体 建立EBGP对等体…

音频基础知识简述 esp-sr 上手指南

此篇博客先对音频基础知识进行简要叙述&#xff0c;然后帮助读者入门 esp-sr SDK。 1 音频的基本概念 1.1 声音的本质 声音的本质是波在介质中的传播现象&#xff0c;声波的本质是一种波&#xff0c;是一种物理量。 两者不一样&#xff0c;声音是一种抽象的&#xff0c;是声…

第二章Linux操作语法1

文章目录vi和vim常用的三种模式vi和vim快捷键Linux开机&#xff0c;重启用户管理用户信息查询管理who和whoami用户组信息查询管理用户和组的相关文件实用指令集合运行级别帮助指令manhelp文件管理类pwd命令ls命令cd命令mkdir命令rmdir命令rm命令touch命令cp指令mv指令文件查看类…

10.单点登录原理及JWT实现

单点登录原理及JWT实现 一、单点登录效果 首先我们看通过一个具体的案例来加深对单点登录的理解。案例地址&#xff1a;https://gitee.com/xuxueli0323/xxl-sso?_fromgitee_search 把案例代码直接导入到IDEA中 然后分别修改下server和samples中的配置信息 在host文件中配置 …

【Opencv项目实战】图像的像素值反转

文章目录一、项目思路二、算法详解2.1、获取图像信息2.2、新建模板2.3、图像通道顺序三、项目实战&#xff1a;彩图的像素值反转&#xff08;方法一&#xff09;四、项目实战&#xff1a;彩图的像素值反转&#xff08;方法二&#xff09;五、项目实战&#xff1a;彩图转换为灰图…

Spark Catalyst

Spark Catalyst逻辑计划逻辑计划解析逻辑计划优化Catalyst 规则优化过程物理计划Spark PlanJoinSelection生成 Physical PlanEnsureRequirementsSpark SQL 端到端的优化流程&#xff1a; Catalyst 优化器 : 包含逻辑优化/物理优化Tungsten : Spark SQL的优化过程 : 逻辑计划 …

pytorch安装的超级详细教程(没有之一)

一、发展历程 &#xff08;简单介绍&#xff09; (15年)caffe --> (16年)tensorflow1.x --> (17年)keras --> (18年)Tensorflow2.x --> (19年)pytorch。 面向gihub开源项目编程。 向下支持比较好&#xff0c;各个版本之间支持比较好&#xff0c;兼容性强。 版本…

自动驾驶介绍系列 ———— 看门狗

文章目录硬件看门狗软件看门狗差异分析延申窗口看门狗硬件看门狗 硬件看门狗的本质上是一个定时器电路。通常存在一个输入&#xff0c;输入到MCU的RST端。在正常工作状态下&#xff0c;MCU每隔固定时间间隔会输出一个信号给RST端&#xff0c;实现对看门狗端清零。如果在指定的时…

全网最全之接口测试【加密解密攻防完整版】实战教程详解

看视频讲的更详细&#xff1a;https://www.bilibili.com/video/BV1zr4y1E7V5/? 一、对称加密 对称加密算法是共享密钥加密算法&#xff0c;在加密解密过程中&#xff0c;使用的密钥只有一个。发送和接收双方事先都知道加密的密钥&#xff0c;均使用这个密钥对数据进行加密和解…