【Java篇】行云流水,似风分岔:编程结构中的自然法则
文章目录
- Java 程序逻辑控制:顺序、分支与循环结构全面解析
-
- 一、顺序结构
- 二、分支结构
-
- 2.1 if 语句
-
- 2.1.1 基本语法
- 2.1.2 if-else 语句
- 2.1.3 if-else if-else 语句
- 2.2 switch 语句
- 三、循环结构
-
- 3.1 while 循环
- 3.2 break 语句
- 3.3 continue 语句
- 3.4 for 循环
- 四、输入输出
-
- 4.1 输出到控制台
- 4.2 从键盘输入
- 五、猜数字游戏
- 六、总结与展望
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(\"优秀\");} else if (score >= 80) { System.out.println(\"良好\");} else { System.out.println(\"不及格\");}
2.2 switch 语句
switch
语句允许根据不同的常量值执行不同的代码块。
switch (day) { case 1: System.out.println(\"星期一\"); break; case 2: System.out.println(\"星期二\"); break; default: System.out.println(\"无效的星期\");}
-
多个case后的常量值不可以重复
-
switch的括号内只能是以下类型的表达式:
- 基本类型:byte、char、short、int,注意不能是long类型
- 引用类型:String常量串、枚举类型
-
break
别忘记加在合适的位置
switch(num) {case 1.0:System.out.println(\"hehe\");break;case 2.0:System.out.println(\"haha\");break;}// 编译出错Test.java:4: 错误: 不兼容的类型: 从double转换到int可能会有损失switch(num) {^1 个错误
三、循环结构
循环结构可以让某一段代码重复执行,直到满足特定的条件。Java 中常用的循环结构有 while
、for
和 do-while
。
3.1 while 循环
while
循环在满足条件时重复执行一段代码。
int i = 0;while (i < 10) { System.out.println(i); i++;}
- 代码示例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);
- 代码示例2:计算 1 - 100 的和
int n = 1;int result = 0;while (n <= 100) { result += n; n++;}System.out.println(result);
执行结果
5050
- 代码示例3:计算 5 的阶乘
int num = 1;int result = 1;while (num <= 5) { result *= num; num++;}System.out.println(result);
执行结果
120
- 代码示例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 循环使用中的常见问题与注意事项
注意事项:
- 和
if
类似,while
语句后面的语句可以不写{}
,但是不写的时候只能支持一条语句,建议还是加上{}
来提高代码的可读性和可维护性。 - 和
if
类似,while
后面的{}
建议和while
写在同一行,以确保代码结构的整洁。 - 和
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);
- 格式化输出符号说明
这是一个关于格式化输出符号的表格,展示了不同的转换符号及其对应的类型和示例:
(\"%d\", 100)
输出:100(\"%x\", 100)
输出:64(\"%o\", 100)
输出:144(\"%f\", 100f)
输出:100.000000(\"%e\", 100f)
输出:1.000000e+02(\"%g\", 100f)
输出:100.000(\"%a\", 100)
输出:0x1.9p6(\"%s\", 100)
输出:100(\"%c\", \'1\')
输出:1(\"%b\", 100)
输出:true(\"%h\", 100)
输出:64(\"%.2f%%\", 2/7f)
输出:0.29%- 使用
Scanner
获取输入并处理数据
以下是一个简单的例子,展示如何使用Scanner
类从用户获取输入并输出格式化结果:
import java.util.Scanner; // 需要导入 util 包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(); // 注意, 要记得调用关闭方法
执行结果:
请输入你的姓名:张三请输入你的年龄:18请输入你的工资:1000你的信息如下:姓名: 张三年龄: 18工资: 1000.0
- 使用
Scanner
循环读取多个数据并计算平均值
这是一个使用 Scanner
类循环读取多个整数并计算总和与平均值的例子:
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();
执行结果:
1040.050.5^Zsum = 150.5avg = 30.1
注意事项:
- 当循环输入多个数据时,可以使用
ctrl + z
来结束输入(Windows 上使用ctrl + z
,Linux / Mac 上使用ctrl + d
)。 - 使用
Scanner
类进行输入时,要特别注意输入数据的类型和结束符号。
println
输出的内容自带\\n
,print
不带\\n
printf
的格式化输出方式和 C 语言的printf
是基本一致的.
4.2 从键盘输入
使用 Scanner
类可以从键盘读取用户输入。
Scanner sc = new Scanner(System.in);System.out.println(\"请输入一个数字:\");int num = sc.nextInt();System.out.println(\"你输入的数字是:\" + num);sc.close();
五、猜数字游戏
在本节中,我们将使用条件语句和循环结构来完成一个简单的猜数字游戏。
系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 “低了”, 如果输入的数字比该随机数大, 提示 “高了” , 如果输入的数字和随机数相等, 则提示 “猜对了” .
import java.util.Random;import java.util.Scanner;public class GuessNumberGame { public static void main(String[] args) { Random random = new Random(); Scanner sc = new Scanner(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(\"低了\"); } else if (guess > toGuess) { System.out.println(\"高了\"); } else { System.out.println(\"猜对了!\"); break; } } sc.close(); }}
六、总结与展望
本篇文章介绍了 Java 中的逻辑控制结构,包括顺序结构、分支结构(if
语句和 switch
语句)以及循环结构(while
、for
、do-while
循环)。通过掌握这些基本控制结构,你将能够编写更加灵活且高效的 Java 程序。
接下来的文章,我们将深入探讨更复杂的编程概念,如数组、集合以及方法的使用,帮助你更好地实现更复杂的逻辑。继续关注,一起走向更高的编程境界!
以上就是关于【Java篇】行云流水,似风分岔:编程结构中的自然法则数据类型与变量:窥见程序的天地万象内容啦,各位大佬有什么问题欢迎在评论区指正,或者私信我也是可以的啦,您的支持是我创作的最大动力!❤️