【JavaSE】逻辑控制语句

news2024/10/8 14:18:23

文章目录

  • 一. 顺序结构
  • 二. 分支结构
    • 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.coloradmin.cn/o/392067.html

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

相关文章

[数据结构]:11-冒泡排序(顺序表指针实现形式)(C语言实现)

目录 前言 已完成内容 冒泡排序实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-PSeqListFunction.cpp 04-SortCommon.cpp 05-SortFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容&#xff0c;除其中使用到C引用外&#xff0c;全为C语言代…

滑模控制(Sliding mode control)快速入门

0. 简介 最近作者受到邀请&#xff0c;让我帮忙给刚入门的学弟讲讲滑模控制。可是作者也不知道怎么向未入门的学弟讲解这些基础知识&#xff0c;所以作者翻了翻近几年写的很好的文章以及视频。综合起来&#xff0c;来总结出一套比较基础&#xff0c;且适用于初学者的文章吧。这…

Node.js的简单学习一-----未完待续

文章目录前言学习目标一、初识Node.js1.1 回顾与思考1.1.1 需要掌握那些技术1.1.2 浏览器中的JavaScript的组成部分1.2 Node.js简介1 什么是Node.js2 Node.js中的JavaScript运行环境3 Node.js 可以做什么1.3 Node.js环境的安装1.4 在Node.js环境中执行JavaScript 代码终端中的快…

掌握好Framework 才是王道~

现在面试对Android开发者的要求越来越高了&#xff01;从最开始的阿里、头条、腾讯等大厂&#xff0c;到现在的互联网车企&#xff0c;面试总喜欢问道 Framework底层原理的相关问题 Android Framework的三大核心功能&#xff1a; 1、View.java:View工作原理&#xff0c;实现包…

海尔三翼鸟:生态聚拢的密度,决定场景落地速度

最近学到一个新词&#xff0c;叫做涌现能力。 怎么理解呢&#xff1f;我们以当下最火的ChatGPT为例&#xff0c;GPT1模型是1.17亿参数&#xff0c;GPT2有15亿参数&#xff0c;GPT3有1750亿个参数。研究人员在放大模型规模的进程中发现一个惊人的现象&#xff0c;模型参数达到一…

Vue基础学习 -- Vue数据与方法 v-指令补充 vue生命周期

Vue数据与方法 实例化Vue对象时&#xff0c;需要在data中定义数据&#xff0c;data选项是一个函数&#xff0c;它应该返回一个对象&#xff0c;然后Vue通过响应性系统将其包裹起来&#xff0c;并以$data形式储存在实例中。为了方便起见&#xff0c;该归降的任何顶级property可…

【蓝桥杯刷题】盗版Huybery系列之手抓饼赛马

【蓝桥杯刷题】—— 盗版Huybery系列之手抓饼赛马&#x1f60e;&#x1f60e;&#x1f60e; 目录 &#x1f4a1;前言&#x1f31e;&#xff1a; &#x1f49b;盗版Huybery系列之手抓饼赛马题目&#x1f49b; &#x1f4aa; 解题思路的分享&#x1f4aa; &#x1f60a;题…

计算机SCI期刊投稿,除了投稿信,还要做什么准备? - 易智编译EaseEditing

投稿信的准备 期刊的编辑往往需要一些有关作者及其论文的信息。 而作者也希望给编辑提供一些有助于其全文送审及决策的信息。 这些信息都应该包括在投稿信中。 投稿信应包括以下几方面的内容&#xff1a; 文题和所有作者的姓名;稿件适宜的栏目; 为什么此论文适合于在该刊而…

大数据框架之Hive:第2章 Hive安装

第2章 Hive安装 2.1 Hive安装地址 1&#xff09;Hive官网地址 http://hive.apache.org/ 2&#xff09;文档查看地址 https://cwiki.apache.org/confluence/display/Hive/GettingStarted 3&#xff09;下载地址 http://archive.apache.org/dist/hive/ 4&#xff09;gith…

OpenCV入门(四)快速学会OpenCV3画基本图形

OpenCV入门&#xff08;四&#xff09;快速学会OpenCV3画基本图形 1.画点 在OpenCV中&#xff0c;点分为2D平面中的点和3D平面中的点&#xff0c;区别就是3D中点多了一个z坐标。我们首先介绍2D中的点&#xff0c;坐标为整数的点可以直接用(x, y)代替&#xff0c;其中x是横坐标…

快速幂----快速求解底数的n次幂

目录 一.快速幂 1.问题的引入 2.快速幂的介绍 3.核心思想 4.代码实现 2.猴子碰撞的方法数 1.题目描述 2.问题分析 3.代码实现 一.快速幂 1.问题的引入 问题:求解num的n次幂,结果需要求余7 对于这个问题我们可能就是直接调用函数pow(a,b)来直接求解a的b次幂问题,但是如果…

灵巧手抓持<分类><仿真>

获取灵巧手抓取物体时的抓持类型&#xff0c;需要考虑&#xff1a;手本身的结构、被抓取物体的形状尺寸、抓持操作任务的条件。 研究方法&#xff1a;基于模型的方法、基于数据驱动的方法 基于模型的方法&#xff1a;建立灵巧手抓持相关的运动学和动力学模型建立目标函数求解…

【操作系统】进程和线程的区别

文章目录1. 概述2. 进程3. 线程4. 协程5. 进程与线程区别1. 概述 进程和线程这两个名词天天听&#xff0c;但是对于它们的含义和关系其实还有点懵的&#xff0c;其实除了进程和线程&#xff0c;还存在一个协程&#xff0c;它们的关系如下&#xff1a; 首先&#xff0c;我们需要…

C++基础——Ubuntu下编写C++环境配置总结(C++基本简介、Ubuntu环境配置、编写简单C++例程)

【系列专栏】&#xff1a;博主结合工作实践输出的&#xff0c;解决实际问题的专栏&#xff0c;朋友们看过来&#xff01; 《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享…

优思学院|质量管理简史:从质检到质控,到六西格玛管理

在现代的工业化生产中&#xff0c;质量管理已成为企业生产运营的不可或缺的一部分。经过长时间的探索和实践&#xff0c;质量管理的理论和实践已经逐步成熟&#xff0c;并形成了完整的体系。下面&#xff0c;我将简要介绍一下质量管理学的发展历程。 质量管理的萌芽期&#xff…

socket聊天室--socket的建立

socket聊天室–socket实现 文章目录 socket聊天室--socket实现socket()bind()listen()accept()connect()发送接收read()函数recv()函数write()函数send()函数close()关闭套接字IP 地址格式转换函数socket() #include <sys/types

web餐饮开源程序

简介 一款专门针对餐饮行业而开发桌面应用程序 技术 借助Panuon.UI.Silver控件库&#xff0c;开发的一款餐饮软件。 运行环境&#xff1a;.NETFramework,Versionv4.8。 运行数据库&#xff1a;MySql。 ORM框架&#xff1a;SqlSugar。 第三方插件&#xff1a;Panuon.UI.Silv…

OpenKruise 开发者不容错过的带薪实习机会!马上加入 LFX Mentorship 计划

LFX Mentorship 计划由 Linux Foundation 组织发起&#xff0c;为像 OpenKruise 这样的 CNCF 托管项目提供了激励开源贡献、扶植社区发展的优秀土壤。参与其中的开发者不仅有机会在经验丰富的社区 Mentor 指导下贡献开源项目、为职业生涯加分&#xff0c;完成工作后还能获得 $3…

【JAVA】Java中集合的遍历

&#x1f3c6;今日学习目标&#xff1a;集合遍历 &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人主页&#xff1a;颜颜yan_的个人主页 ⏰本期期数&#xff1a;第五期 &#x1f389;专栏系列&#xff1a;JAVA 集合遍历前言一、Iterator接口二、foreach循环总结前言 在实际开发…

JavaScript基础二、变量

零、文章目录 文章地址 个人博客-CSDN地址&#xff1a;https://blog.csdn.net/liyou123456789个人博客-GiteePages&#xff1a;https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee&#xff1a;https://gitee.com/bluecusliyou/TechLearnGithub&#xff1a;https:…