【0基础学Java第四课】-- 逻辑控制
4. 逻辑控制
- 4.1 顺序结构
- 4.2 分支结构
- 4.2.1 if语句
- 判断一个数字是奇数还是偶数
- 判断一个数字是正数,负数,还是零
- 判断一个年份是否为闰年
- 4.2.2 switch 语句
- 4.3 while循环
- 打印 1 - 10 的数字
- 计算 1 - 100 的和
- 计算 5 的阶乘
- 计算1!+2!+ 3!+ 4!+ 5!
- 4.4 break
- 4.5 continue
- 4.6 for循环
- 打印1-10的数字
- 计算 1 - 100 的和
- 计算 5 的阶乘
- 计算 1! + 2! + 3! + 4! + 5!
- 4.7 do while 循环
- 4.8 输入输出
- 4.8.1 输出到控制台
- 4.8.2 从键盘输入
4.1 顺序结构
按照代码书写的顺序一行一行执行。
4.2 分支结构
4.2.1 if语句
-
语法格式1

-
语法格式2

-
语法格式3
`
判断一个数字是奇数还是偶数
import java.util.Scanner;public static void main3(String[] args) {Scanner scan = new Scanner(System.in);int num = scan.nextInt(); // 输入一个整数if (num % 2 == 0) {System.out.println(num+ " 是偶数");}else {System.out.println(num+ "是奇数");}}
判断一个数字是正数,负数,还是零
public static void main4(String[] args) {Scanner scan = new Scanner(System.in);int num = scan.nextInt();if (num > 0) {System.out.println("正数");}else if(num < 0) {System.out.println("负数");}else {System.out.println("0");}}
判断一个年份是否为闰年
public static void main(String[] args) {Scanner scan = new Scanner(System.in);int year = scan.nextInt();if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {System.out.println(year +"闰年");} else {System.out.println(year +"不是闰年");}}
注意:
- 代码风格(Java代码的风格走)

- 分号问题
public static void main(String[] args) {int x = 20;if (x == 10);{System.out.println("hehe");} // 运行结果hehe//此处多写了一个 分号, 导致分号成为了 if 语句的语句体,// 而 { } 中的代码已经成为了和一个 if 无关的代码块.}
4.2.2 switch 语句
执行流程:
- 先计算表达式的值
- 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束
- 当表达式的值没有与所列项匹配时,执行default
public static void main2(String[] args) {int a = 1;//switch 参数里面不能是一个很复杂的参数switch (a){case 1:System.out.println("1");//break;case 2:System.out.println("2");break;default:System.out.println("sss");break;}String str = "abc";switch (str){case "abc":System.out.println("abc");break;case "124":System.out.println("124");break;default:System.out.println("输入有误");break;}//可以是枚举//面试题: 不能作为switch参数的数据类型是什么?// float double boolean long\char ch = 'a';switch (ch){}}
注意
- 多个case后的常量值不可以重复
- switch的括号内只能是以下类型的表达式:
- 本类型:byte、char、short、int,注意不能是long类型
- 引用类型:String常量串、枚举类型
4.3 while循环
基本语法格式

打印 1 - 10 的数字
public static void main(String[] args) {//打印 1 - 10 的数字int a = 1;while(a <= 10) {System.out.println(a);a++;}}
计算 1 - 100 的和
public static void main(String[] args) {int a = 1;int sum = 0;while(a <= 100) {sum += a;a++;}System.out.println(sum);}
计算 5 的阶乘
public static void main(String[] args) {//计算 5 的阶乘int i = 1;int ret = 1;while(i <= 5) {ret *= i;i++;}System.out.println("5的阶乘:"+ret);}
计算1!+2!+ 3!+ 4!+ 5!
public static void main(String[] args) {//计算1!+2!+ 3!+ 4!+ 5!int n = 1;int sum = 0;// 外层循环负责求阶乘的和while (n <= 5){int ret = 1;int i= 1;//里层循环负责完成求阶乘的细节while (i <= n) {ret *= i;i++;}sum += ret;n++;}System.out.println(sum);}
这里我们发现, 当一个代码中带有多重循环的时候, 代码的复杂程度就大大提高了. 而比较复杂的代码就更容易出错.后面我们会采用更简单的办法来解决这个问题。
注意:
- 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
- 和 if 类似, while 后面的 { 建议和 while 写在同一行.
- 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.
4.4 break
break 的功能是让循环提前结束.
例题:找到 100 - 200 中第一个 3 的倍数
public static void main(String[] args) {// 100 - 200 中第一个 3 的倍数int num = 100;while (num <= 200) {if (num % 3 == 0) {System.out.println("找到了 3 的倍数, 为:" + num);break;}num++;}}
执行到break,退出循环。
4.5 continue
continue 的功能是跳过这次循环, 立即进入下次循环.
例题:找到 100 - 200 中所有 3 的倍数
public static void main(String[] args) {int num = 100;while (num <= 200) {if (num % 3 != 0) {num++;continue;}System.out.println("3的倍数:"+num);num++;}}
执行到 continue 语句的时候, 就会立刻进入下次循环(判定循环条件), 从而不会执行到下方的打印语句.
4.6 for循环
for(表达式①;布尔表达式②;表达式③){
表达式④;
}
- 表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次
- 表达式2: 循环条件,满则循环继续,否则循环结束
- 表达式3: 循环变量更新方式
打印1-10的数字
public static void main(String[] args) {for (int i = 1;i <= 10;i++) {System.out.println(i);}}
计算 1 - 100 的和
public static void main(String[] args) {int sum = 0;for (int i = 0; i <= 100; i++) {sum += i;}System.out.println("sum = "+sum);}
计算 5 的阶乘
public static void main(String[] args) {int ret = 1;for (int i = 1; i < 6; i++) {ret *= i;}System.out.println("5的阶乘:"+ret);}
计算 1! + 2! + 3! + 4! + 5!
public static void main(String[] args) {int sum = 0;for (int j = 1; j <= 5; j++) {int ret = 1;for (int i = 1; i < 6; i++) {ret *= i;}sum += ret;}System.out.println("1-5的阶乘和:"+sum);}
注意:
- 和 if 类似, for 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
- 和 if 类似, for 后面的 { 建议和 while 写在同一行.
- 和 if 类似, for 后面不要多写 分号, 否则可能导致循环不能正确执行.
- 和while循环一样,结束单趟循环用continue,结束整个循环用break
4.7 do while 循环
do{
循环语句;
}while(循环条件);
先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。
比如:打印1-10
public static void main(String[] args) {int i = 1;do {System.out.println(i);i++;} while (i <= 10);}
注意:
- do while 循环最后的分号不要忘记
- 一般 do while 很少用到, 更推荐使用 for 和 while.
4.8 输入输出
4.8.1 输出到控制台
public static void main(String[] args) {System.out.println("输出换行"); System.out.print("输出不带换行"); System.out.printf("%s\n", "格式化输出"); }
- println 输出的内容自带 \n, print 不带 \n
- printf 的格式化输出方式和 C 语言的 printf 是基本一致的.
4.8.2 从键盘输入
使用 Scanner 读取字符串/整数/浮点数
public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入你的姓名:");String name = sc.nextLine();System.out.println("请输入你的年龄:");int age = sc.nextInt();System.out.println("请输入你的工资:");float salary = sc.nextFloat();System.out.println("你的信息如下:");System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);sc.close(); // 注意, 要记得调用关闭方法}
使用 Scanner 循环读取 N 个数字
public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNextInt()) {int a = sc.nextInt();System.out.println(a);}}
使用 Scanner 循环读取 N 个数字,并求取其平均值
public static void main(String[] args) {Scanner sc = new Scanner(System.in);int sum = 0;int num = 0;while (sc.hasNextInt()) {int tmp = sc.nextInt();sum += tmp;num++;}System.out.println("sum="+sum);System.out.println("avg="+sum/num);sc.close();}
注意:
当循环输入多个数据的时候, 使用 ctrl + z 来结束输入 (Windows 上使用 ctrl + z, Linux / Mac 上使用 ctrl+ d)。
相关文章:
【0基础学Java第四课】-- 逻辑控制
4. 逻辑控制 4.1 顺序结构4.2 分支结构4.2.1 if语句判断一个数字是奇数还是偶数判断一个数字是正数,负数,还是零判断一个年份是否为闰年 4.2.2 switch 语句 4.3 while循环打印 1 - 10 的数字计算 1 - 100 的和计算 5 的阶乘计算1!2࿰…...
C++中的std::cout与std::cerr、std::clog
本文用于记录C中std::cout与std::cerr、std::clog的异同 std::cerr 是C标准库中的标准错误输出流,用于向标准错误设备输出信息,通常用于报告程序的错误和异常情况。与之相对的,std::cout 是标准输出流,用于向标准输出设备输出一般…...
No authorization token was found
今天遇到了一个问题,我把前后端逻辑都理了一遍,开始怀疑后端,后端肯定没错了,把前端理了一遍,ok前后端没错,我错。登录哪里需要的token????把我搞懵逼了。 测…...
Kubernetes概述及其组件/核心组件
目录 1、K8S 是什么? 2、为什么要用 K8S? 3、k8s的特性 4、Kubernetes 集群架构与组件 5、核心组件 Master 组件 ●Kube-apiserver ●Kube-controller-manager ●Kube-scheduler 配置存储中心 ●etcd Node 组件 ●Kubelet ●Kube-Proxy ●docker 或…...
毫米波雷达实时采集教
https://www.cnblogs.com/dhyc/p/10510876.html 毫米波雷达实时采集教程---- 以及好网站总结:资料分享——RSP1 多普勒雷达开发套件...
Java进阶(HashMap)——面试时HashMap常见问题解读 结合源码分析
前言 List、Set、HashMap作为Java中常用的集合,需要深入认识其原理和特性。 本篇博客介绍常见的关于Java中HashMap集合的面试问题,结合源码分析题目背后的知识点。 关于List的博客文章如下: Java进阶(List)——面试…...
Kotlin 使用@BindingAdapter编译出错
在 Kotlin 中使用 BindingAdapter 注解时,需要确保你的项目正确配置了 Data Binding。 首先,请确保在项目的 build.gradle 文件中启用了 Data Binding: android {// ...dataBinding {enabled true} }接下来,请确保你在正确的地…...
Qt之信号和槽,connect参数分析
connect()方法 Qt进行信号和槽连接,有以下几种方法: static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType Qt::AutoConnection); static QMetaObj…...
Python学习笔记—元组
1、元组定义 元组使用()来定义,元素在()括号内,用逗号隔开 空元组定义,元组名() 注:当元组只有1个元素的时候,需要在元素后面加逗号,…...
【C++项目】高并发内存池第五讲内存回收释放过程介绍
内存回收 1.ThreadCache2.CentralCache3.PageCache 项目源代码:高并发内存池 1.ThreadCache void ThreadCache::Deallocate(void* ptr, size_t size) {assert(ptr);assert(size < MAX_BYTES);//计算在哪号桶中,然后插入进去size_t index SizeClass…...
[毕设记录]@学术工具体验:Sread.ai
我是在查RAG相关的时候,在知乎上面看到了这篇回答:浅谈生成式 AI 技术:检索增强生成 RAG - MarvinZ的文章 - 知乎 https://zhuanlan.zhihu.com/p/659248219 然后在末尾看到了这个 sread.ai 在作者主页看到了他关于这个产品的介绍:…...
uboot - 驱动开发 - 驱动模型
说明 类似于linux,为了规范、统一驱动适配和驱动接口调用,uboot定义了一套驱动模型(Driver Model),简称DM。本文基于:u-boot-2021.10。 优点 为同一类ip的驱动定义了统一的操作接口,DM在软件层面做了一定的抽象。分…...
windows 操作系统命令积累
1. 按 "prt sc" 键 截屏 2. 按 "fn" 键让浏览器进入全屏模式,再次按 "fn" 键让浏览器退出全屏模式( ps:惠普笔记本上是 "fn" "f11" ) 3. ipconfig 查看ip信息 4. 查看指定端口被什么进程占用...
数据结构单链表的实现(C语言)
目录 1.实现的接口和功能2.代码块 1.实现的接口和功能 //打印链表 void SLTPrint(SLTNode** phead); //头插 void PushFont(SLTNode** phead, SLTDataType x); //尾插 void PushBack(SLTNode** phead, SLTDataType x); //头删 void PopFont(SLTNode** phead); //尾删 void Pop…...
Postman的高级使用,傻瓜式学习【下】
目录 前言 1、全局变量、环境变量 1.1、概念: 1.2、如何设置全局变量、环境变量 1.3、获取全局变量、环境变量 1.4、案例1:手动设置变量,请求参数获取 1.5、案例2:代码设置变量,代码获取变量 2、Postman读取外部…...
Qt:关闭对话框,动画实现窗体逐渐缩小到消失
关键技术: 1、使用QPropertyAnimation对象,实现动画效果,逐渐缩小窗体尺寸,以及透明度; 2、在对话框缩小时,要将界面中的控件都隐藏起来,并且将对话框布局的Margin修改成0 代码如下ÿ…...
在Windows上 ciphey安装(详细版)
文章目录 前言 一、不想卸载原有的python版本? 二、安装步骤 1.安装python 2.创建虚拟环境vnev 3.在ciphey的虚拟环境中进行激活 4.安装ciphey 三、参数列表 总结 前言 提示:安装了好几次,但是都没安装成功,我使用了三个电脑p…...
【lesson2】数据库的库操作
文章目录 库操作创建数据库删除数据库字符集和校验规则手动设置字符集和校验集不同字符集和校验集之间的区别修改数据库字符集和校验集备份和恢复数据库 库操作 创建数据库 删除数据库 字符集和校验规则 创建数据库的时候,有两个编码集: 1.数据库编码集…...
Android Studio Giraffe解决gradle reload failed问题
settings.gradle.kts中 pluginManagement {repositories {google()mavenCentral()gradlePluginPortal()} } dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()} } 各增加三行内容&#x…...
刷题笔记day06-哈希表
242.有效的字母异位词 // 思路2:排序后在比较是否相等import ("sort""fmt""io""strings""os" )func isAnagram(s string, t string) bool {s1, s2 : []byte(s), []byte(t)// 从小到大排序sort.Slice(s1, func(i…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
