在 Java 程序中,各个语句的执行顺序决定了最终结果。因此,我们需要使用流程控制语句来管理代码的执行顺序。
程序主要分为三种结构:顺序结构、分支结构(选择结构)和循环结构。
本文介绍了 Java 程序中的流程控制语句,包括顺序结构、分支结构(if-else, switch)和循环结构(for, while, do-while)。详细讲解了各结构的语法格式、执行流程及注意事项,如 switch 的数据类型限制、穿透问题,以及 break 和 continue 的区别。文中还包含多个实战例题,如求和、阶乘、九九乘法表及质数判断等,帮助读者掌握基础逻辑控制。

在 Java 程序中,各个语句的执行顺序决定了最终结果。因此,我们需要使用流程控制语句来管理代码的执行顺序。
程序主要分为三种结构:顺序结构、分支结构(选择结构)和循环结构。
顺序结构是程序的默认结构,即从上到下、从左到右依次执行。

分支结构也被称为选择结构,一旦加入选择方式,就有了选择性操作。
单分支的 if 语句只有一个分支,没有更多的选择。
格式:


双分支的 if-else 语句有两个不同的选择,要么为 true,要么为 false。最多只能执行一个语句组。双分支的 if-else 语句与三目运算符的效果是一样的。
格式:


if 的嵌套:

格式:


注意:
switch...case 开关语句也是多分支,只能做相等比较。
注意:
格式:


在 switch 语句中的 break 是用来结束当前的 case 的。
break 是终止的意思,在 switch 中主要用来结束整个 switch 语句。
如果在语句体中不添加 break,则会出现 switch 穿透问题,直到遇到 break 或结束为止。

示例:没有 break,输入一月份后续条件仍会默认进行

加入 break 后,输入一月份后续会被中断,不会默认进行

代码调试功能即 Debug 模式,主要是目的是减低执行速度,后期是为了解决问题而生。
使用步骤:



控制台用来查看运行到哪一个步骤

循环结构就是在 Java 中会出现很多的重复性代码,如果使用循环结构会效率更高。
for 循环就是使用关键字 for 来包裹的循环实现方式。确定了循环次数使用。
条件表达式用来表示循环运行的终点

执行流程:

如果不理解可以通过断点来进行判断:





双层 for 循环嵌套

求 1--100 之间的数字:println 在循环内时,每循环一次都会打印一次结果,如果 print 在循环之外,则只会打印出最后一个结果。


求 1--100 之间的数字之和:
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println(sum);


求 10!(10 的阶乘=1 * 2 * 3 * ..... * 10) 的数据:product*=i --> product=product*i


求 1--100 之间的奇数之和:初始数字是 1,奇数 + 偶数=奇数,所以每一次循环 i+2 仍属于奇数


求 1--100 之间偶数和:比奇数稍微复杂,需要利用 if 语句来进行判断是否为偶数


逢七过,打印 1--100 之间的数字,如果是 7 的倍数或者包含 7 则打印过,反之打印数字,并计算有多少个"过":注意不只是 7 为过,17、27、70、71 这些数字都是过,需要进行判断,这里使用的是短路或来进行判断


九九乘法表:需要使用到双层 for 循环,需要注意打印乘法表时,被乘数不要大于乘数,同时需要辨别 print 和 println 的用法区别:
print 不会进行换行打印 println 能够进行换行打印
错误示范:

打印结果:

正确代码:


while 循环是以 while 关键字包裹的代码来实现循环的结构。不确定循环次数。


for 循环是最常用的循环,开发中几乎 90% 左右的循环都是 for 循环,for 使用场景是明确知道循环次数的情形
while 是 Java 中第二常用的循环。
while 循环能实现 for 循环全部的功能,即:while 循环可以替代 for 循环。
除此以外,while 循环还适用于不知道具体循环次数的循环(只知道循环结束条件,但不清楚循环多少次结束。)
while 循环最大的特点:适用于不知道循环次数的循环
do-while 循环是以关键字 do 和 while 组合在一起的循环实现方式。不确定循环次数,但至少需要执行一次。
do-while 循环效果和 for 循环和 while 循环效果是一模一样的。
格式:

注意:do-while 是先执行循环体再执行条件,则相比较于 for 循环和 while 循环而言,do-while 至少要执行一次循环体。

break: 终止、中断的意思
用法:
break、continue 总结
// for 循环变体
// 死循环 循环体内没有能够支持结束条件的因素
// int num = 1;
// for(;num<10;){
// System.out.println(num);
// }
//
// //正常运行
// int num = 1;
// for(;num<10;){
// System.out.println(num++);
// }
//
// //死循环 条件过于宽泛 导致无法进行条件的终止 陷入死循环
// int num = 1;
// for(;num>=1;){
// System.out.println(num++);
// }
//
// //不执行 第一次循环不满足条件导致无法进行循环
// int num = 1;
// for(;num>=10;){
// System.out.println(num++);
// }
//
// //死循环 没有判断条件导致循环不断进行,进入死循环
// int num = 1;
// for(;;){
// System.out.println(num++);
// }
//
// //满足循环语句中的条件,使用 break 来结束循环
// int num = 1;
// for(;;){
// if(num == 10){
// //结束当前 for 循环
// break;
// }
// System.out.println(num++);
// }




/*题目二*/
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个范围在 1——10 正整数:");
int n = sc.nextInt();
if (n < 1 || n > 10) {
System.out.println("无法评定");
}
for (int i = 1; i <= n; i++) {
System.out.print("输入第" + i + "次成绩:");
int score = sc.nextInt();
if (score < 0 || score > 100) {
System.out.println("该成绩无效,跳过评级");
} else {
System.out.print("成绩" + score + ",");
switch (score / 10) {
case 10:
case 9:
System.out.println("等级:A");
break;
case 8:
System.out.println("等级:B");
break;
case 7:
System.out.println("等级:C");
break;
case 6:
System.out.println("等级:D");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
System.out.println("成绩:" + score + ",等级:E");
}
}
}


Scanner sc = new Scanner(System.in);
System.out.print("请输入起始值(start):");
int start = sc.nextInt();
System.out.print("请输入终止值(end):");
int end = sc.nextInt();
if (start >= end || start<1 || end>200) {
System.out.println("输入无效,请确保 1<=start<end<=200");
}
String result = "";
int count = 0;
for(int i = start; i<=end; i++){
if (i>=50 && i<=150 && i%4==0 &&(i%10==2 || i%10==6 )){
count+=1;
result = result + i + "、";
}
}
System.out.println(start+"到"+end+"中,满足条件的数字有:"+result+";共"+count+"个");


Scanner sc = new Scanner(System.in);
System.out.print("请输入需要计算的商品数量(m):");
int m = sc.nextInt();
if (m<1 || m>4){
System.out.println("商品数量无法进行计算");
}
for (int i=1;i<=m;i++) {
System.out.println("请输入商品的原价(price):");
int price = sc.nextInt();
System.out.println("请输入折扣等级(level):");
int level = sc.nextInt();
double discount = price;
if (price < 10 && price > 100) { // 逻辑修正:通常应为 price < 0 或类似,此处保留原意但修正语法
System.out.println("商品原价无效,跳过计算");
break;
}
if (level < 1 || level > 3) {
System.out.println("折扣等级无效,按原价计算");
} else{
switch (level) {
case 1: discount = price * 0.9; break;
case 2: discount = price * 0.9; break;
case 3: discount = price * 0.9; break;
}
System.out.println("商品原价:" + price + ",折扣等级:" + level + ",折后价:" + discount);
}
}


了解质数定义后在进行编写
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个正整数(n):");
int n = sc.nextInt();
if (n < 10 || n > 30) {
System.out.println("输入无效,请输入 10——30 之间的正整数。");
} else {
for (int i = 1; i <= n; i++) {
boolean a = true;
if (i == 1) {
a = false;
} else {
for (int j = 2; j < i; j++) {
//将 j 作为除数,用来进行除法运算,质数的定义是只能被 1 和自己本身整除
if (i % j == 0) {
a = false;
break;
}
}
}
if (a) {
System.out.println(i+"(质数)");
}else {
System.out.println(i);
}
}
}


微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online