【Java篇】行云流水,似风分岔:编程结构中的自然法则

【Java篇】行云流水,似风分岔:编程结构中的自然法则

文章目录

Java 程序逻辑控制:顺序、分支与循环结构全面解析

💬 欢迎讨论:如果你在阅读过程中有任何疑问或想要进一步探讨的内容,欢迎在评论区留言!我们一起学习、一起成长。

👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏并分享给更多想了解 Java 编程的朋友!

🚀 继续学习之旅:在本篇文章中,我们将探讨 Java 程序的逻辑控制结构,包括顺序结构、分支结构以及循环结构。掌握这些基本概念将帮助你更好地理解 Java 编程,提升代码的可读性与灵活性。

一、顺序结构

顺序结构是最基础的控制结构,程序按照书写的顺序逐行执行,执行过程不发生跳转。每一行代码的执行顺序与它们在程序中的排列顺序相同。

System.out.println("开始程序");System.out.println("执行步骤1");System.out.println("执行步骤2");

在没有任何分支和循环结构时,程序的执行会按照顺序逐步进行。


二、分支结构

分支结构允许程序根据不同条件执行不同的代码块。Java 提供了 if 语句和 switch 语句来实现这一功能。

2.1 if 语句

if 语句用于根据布尔表达式的结果决定是否执行某一代码块。

2.1.1 基本语法
if(条件表达式){// 条件为 true 时执行的代码}
2.1.2 if-else 语句
if(条件表达式){// 条件为 true 时执行的代码}else{// 条件为 false 时执行的代码}
2.1.3 if-else if-else 语句

当有多个条件时,可以使用 else if 来判断不同的条件。

if(score >=90){System.out.println("优秀");}elseif(score >=80){System.out.println("良好");}else{System.out.println("不及格");}

2.2 switch 语句

switch 语句允许根据不同的常量值执行不同的代码块。

switch(day){case1:System.out.println("星期一");break;case2:System.out.println("星期二");break;default:System.out.println("无效的星期");}
  • 多个case后的常量值不可以重复
  • switch的括号内只能是以下类型的表达式:
    • 基本类型:byte、char、short、int,注意不能是long类型
    • 引用类型:String常量串、枚举类型
  • break别忘记加在合适的位置
switch(num){case1.0:System.out.println("hehe");break;case2.0:System.out.println("haha");break;}// 编译出错Test.java:4: 错误: 不兼容的类型: 从double转换到int可能会有损失 switch(num){^1 个错误 

三、循环结构

循环结构可以让某一段代码重复执行,直到满足特定的条件。Java 中常用的循环结构有 whilefordo-while

3.1 while 循环

while 循环在满足条件时重复执行一段代码。

int i =0;while(i <10){System.out.println(i); i++;}
  1. 代码示例1:计算 1! + 2! + 3! + 4! + 5!
int num =1;int sum =0;// 外层循环负责计算阶乘的和while(num <=5){int factorResult =1;int tmp =1;// 里层循环负责完成阶乘的计算while(tmp <= num){ factorResult *= tmp; tmp++;} sum += factorResult; num++;}System.out.println("sum = "+ sum);
  1. 代码示例2:计算 1 - 100 的和
int n =1;int result =0;while(n <=100){ result += n; n++;}System.out.println(result);

执行结果
5050

  1. 代码示例3:计算 5 的阶乘
int num =1;int result =1;while(num <=5){ result *= num; num++;}System.out.println(result);

执行结果
120

  1. 代码示例4:计算 1! + 2! + 3! + 4! + 5!
int num =1;int sum =0;// 外层循环负责计算阶乘的和while(num <=5){int factorResult =1;int tmp =1;// 里层循环负责完成阶乘的计算while(tmp <= num){ factorResult *= tmp; tmp++;} sum += factorResult; num++;}System.out.println("sum = "+ sum);

while 循环使用中的常见问题与注意事项

注意事项:

  1. if 类似,while 语句后面的语句可以不写 {},但是不写的时候只能支持一条语句,建议还是加上 {} 来提高代码的可读性和可维护性。
  2. if 类似,while 后面的 {} 建议和 while 写在同一行,以确保代码结构的整洁。
  3. if 类似,while 后面不要多写分号,否则可能导致循环条件 num <= 10 恒成立,进而导致代码死循环。
int num =1;while(num <=10);{System.out.println(num); num++;}

执行结果:

[无任何输出,程序死循环]

解释:

  • 在上述例子中,若在 while 循环条件后面不小心加了一个多余的分号,while 语句会变成一个空语句,导致死循环的发生。

3.2 break 语句

break 用于提前结束循环。

int i =0;while(i <10){if(i ==5){break;// 当 i 等于 5 时跳出循环}System.out.println(i); i++;}

3.3 continue 语句

continue 用于跳过当前的循环,直接进入下一次循环。

int i =0;while(i <10){if(i ==5){ i++;continue;// 跳过当前循环}System.out.println(i); i++;}

3.4 for 循环

for 循环常用于已知循环次数的场景。

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

四、输入输出

4.1 输出到控制台

Java 提供了 System.out.println()System.out.print()System.out.printf() 方法用于不同格式的输出。

System.out.println("Hello, World!");System.out.printf("Formatted Number: %.2f\n",3.14159);
  1. 格式化输出符号说明
    这是一个关于格式化输出符号的表格,展示了不同的转换符号及其对应的类型和示例:
转换符号类型举例
d十进制整数("%d", 100) 输出:100
x十六进制整数("%x", 100) 输出:64
o八进制整数("%o", 100) 输出:144
f定点浮点数("%f", 100f) 输出:100.000000
e指数浮点数("%e", 100f) 输出:1.000000e+02
g通用浮点数("%g", 100f) 输出:100.000
a十六进制浮点数("%a", 100) 输出:0x1.9p6
s字符串("%s", 100) 输出:100
c字符("%c", '1') 输出:1
b布尔值("%b", 100) 输出:true
h散列码("%h", 100) 输出:64
%百分号("%.2f%%", 2/7f) 输出:0.29%

  1. 使用 Scanner 获取输入并处理数据
    以下是一个简单的例子,展示如何使用 Scanner 类从用户获取输入并输出格式化结果:
importjava.util.Scanner;// 需要导入 util 包Scanner sc =newScanner(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();// 注意, 要记得调用关闭方法

执行结果:

请输入你的姓名: 张三 请输入你的年龄: 18 请输入你的工资: 1000 你的信息如下: 姓名: 张三 年龄: 18 工资: 1000.0

  1. 使用 Scanner 循环读取多个数据并计算平均值

这是一个使用 Scanner 类循环读取多个整数并计算总和与平均值的例子:

Scanner sc =newScanner(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();

执行结果:

1040.050.5 ^Z sum=150.5 avg =30.1

注意事项:

  1. 当循环输入多个数据时,可以使用 ctrl + z 来结束输入(Windows 上使用 ctrl + z,Linux / Mac 上使用 ctrl + d)。
  2. 使用 Scanner 类进行输入时,要特别注意输入数据的类型和结束符号。
  • println 输出的内容自带 \n, print 不带 \n
  • printf 的格式化输出方式和 C 语言的 printf 是基本一致的.

4.2 从键盘输入

使用 Scanner 类可以从键盘读取用户输入。

Scanner sc =newScanner(System.in);System.out.println("请输入一个数字:");int num = sc.nextInt();System.out.println("你输入的数字是:"+ num); sc.close();

五、猜数字游戏

在本节中,我们将使用条件语句和循环结构来完成一个简单的猜数字游戏。

系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 “低了”, 如果输入的数字比该随机数大, 提示 “高了” , 如果输入的数字和随机数相等, 则提示 “猜对了” .
importjava.util.Random;importjava.util.Scanner;publicclassGuessNumberGame{publicstaticvoidmain(String[] args){Random random =newRandom();Scanner sc =newScanner(System.in);int toGuess = random.nextInt(100)+1;while(true){System.out.println("请输入一个数字(1-100):");int guess = sc.nextInt();if(guess < toGuess){System.out.println("低了");}elseif(guess > toGuess){System.out.println("高了");}else{System.out.println("猜对了!");break;}} sc.close();}}

六、总结与展望

本篇文章介绍了 Java 中的逻辑控制结构,包括顺序结构、分支结构(if 语句和 switch 语句)以及循环结构(whilefordo-while 循环)。通过掌握这些基本控制结构,你将能够编写更加灵活且高效的 Java 程序。

接下来的文章,我们将深入探讨更复杂的编程概念,如数组、集合以及方法的使用,帮助你更好地实现更复杂的逻辑。继续关注,一起走向更高的编程境界!


以上就是关于【Java篇】行云流水,似风分岔:编程结构中的自然法则数据类型与变量:窥见程序的天地万象内容啦,各位大佬有什么问题欢迎在评论区指正,或者私信我也是可以的啦,您的支持是我创作的最大动力!❤️

在这里插入图片描述

Read more

我的算法修炼之路--8——预处理、滑窗优化、前缀和哈希同余,线性dp,图+并查集与逆向图

我的算法修炼之路--8——预处理、滑窗优化、前缀和哈希同余,线性dp,图+并查集与逆向图

💗博主介绍:计算机专业的一枚大学生 来自重庆 @燃于AC之乐✌专注于C++技术栈,算法,竞赛领域,技术学习和项目实战✌💗 💗根据博主的学习进度更新(可能不及时) 💗后续更新主要内容:C语言,数据结构,C++、linux(系统编程和网络编程)、MySQL、Redis、QT、Python、Git、爬虫、数据可视化、小程序、AI大模型接入,C++实战项目与学习分享。 👇🏻 精彩专栏 推荐订阅👇🏻 点击进入🌌作者专栏🌌: Linux系统编程✅ 算法画解 ✅ C++ ✅ 🌟算法相关题目点击即可进入实操🌟 感兴趣的可以先收藏起来,请多多支持,还有大家有相关问题都可以给我留言咨询,希望希望共同交流心得,一起进步,你我陪伴,学习路上不孤单! 文章目录 * 前言 * 题目清单 * 1.寻宝 * 2.村村通

By Ne0inhk
从树到森林——决策树、随机森林与可解释性博弈

从树到森林——决策树、随机森林与可解释性博弈

从树到森林——决策树、随机森林与可解释性博弈 “如果你不能向酒吧侍者解释清楚你的模型,那你可能还没真正理解它。” 而决策树,正是那个既能讲清道理,又能打胜仗的算法。 一、为什么需要树模型? 线性模型优雅、透明,但它有一个致命假设:特征与目标之间是线性关系。 现实世界却充满非线性、交互效应和分段规则: * “如果年龄 > 60 且 血压 > 140,则高风险”; * “当用户点击过广告 A 且未购买,则推送优惠券 B”。 这些条件判断天然适合用“树”来表达。 🎯 本章目标:理解决策树如何通过“提问”进行预测;掌握信息增益、基尼不纯度等分裂准则;实现一棵简单的决策树;理解集成思想:从单棵树到随机森林;辩证看待“可解释性”:树真的那么透明吗? 二、决策树:用问答游戏做预测 1. 直觉:像玩“

By Ne0inhk
【嵌入式】直流无刷电机FOC控制算法全解析

【嵌入式】直流无刷电机FOC控制算法全解析

【嵌入式】直流无刷电机FOC控制算法全解析——原理、代码与实战 文章目录 * 【嵌入式】直流无刷电机FOC控制算法全解析——原理、代码与实战 * 引言 * 一、电机基础:从结构到控制原理铺垫 * 1. 无刷电机核心构成与优势 * 2. BLDC与PMSM的核心区别 * 3. 传统控制与FOC的本质差异 * 二、FOC核心原理:从坐标系变换到SVPWM实现 * 1. FOC算法整体框架(流程图) * 2. 核心坐标变换:从三相到两相的降维魔法 * (1)Clarke变换:静止坐标系降维 * (2)Park变换:静止到旋转的解耦 * 3. SVPWM:空间矢量的脉冲合成 * (1)基本电压矢量与扇区划分 * (2)扇区判断逻辑 * (3)矢量作用时间计算 * (4)PWM占空比生成 * 三、硬件与软件实战:STM32F103实现FOC控制 * 1. 硬件系统架构(

By Ne0inhk
【机器学习与数据挖掘实战 | 商务】案例17:基于K-means和决策树的餐饮企业综合分析

【机器学习与数据挖掘实战 | 商务】案例17:基于K-means和决策树的餐饮企业综合分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数据集中发现模式、关联和异常的过程,旨在提取有价值的信息和知识。机器学习为数据挖掘提供了强大的分析工具,而数据挖掘则是机器学习应用的重要领域,两者相辅相成,共同推动数据科学的发展。本专栏介绍机器学习与数据挖掘的相关实战案例。 【GitCode】专栏资源保存在我的GitCode仓库:https://gitcode.com/Morse_Chen/ML-DM_cases(附:文末网盘链接下载源代码) 文章目录 * 一、餐饮企业分析需求 * (一)餐饮企业现状与需求 * (二)餐饮企业数据基本状况 * (三)餐饮企业数据分析的步骤与流程 * 二、数据准备与预处理 * (一)统计每日用餐人数与销售额 * (二)数据预处理 * 三、使用K-means算法进行客户价值分析 * (一)构建RFM特征

By Ne0inhk