一、程序逻辑控制的概述
程序的逻辑控制是指通过特定的语句来控制代码的执行顺序,它主要包括顺序结构、分支结构和循环结构。就像我们每天的生活,早上起床、洗漱、吃早饭,这是顺序执行;而选择好好学习还是虚度光阴,这是分支选择;日复一日地努力,这便是循环往复。
二、顺序结构:按部就班的执行
顺序结构是程序中最基本的执行方式,它按照代码书写的顺序一行一行地执行。比如下面的代码:
System.out.println("aaa");
System.out.println("bbb");
System.out.println("ccc");
运行结果会依次输出 “aaa”“bbb”“ccc”。如果我们调整代码的书写顺序,执行结果也会相应改变。
顺序结构虽然简单,但却是程序执行的基础,任何复杂的程序都是在顺序结构的基础上,通过分支和循环来构建的。
三、分支结构:面临选择的决策
在程序中,我们经常需要根据不同的条件来执行不同的代码块,这就需要用到分支结构。Java 中主要有 if 语句和 switch 语句两种分支结构。
1. if 语句
if 语句根据布尔表达式的结果来决定执行哪段代码,它有三种语法格式:
-
语法格式 1:当布尔表达式的结果为 true 时,执行大括号中的语句。
if(布尔表达式){
// 语句
}
例如,判断考试分数是否大于等于 90 分:
int score = 92;
if(score >= 90){
System.out.println("yes");
}
语法格式 2:当布尔表达式结果为 true 时,执行 if 中的语句,否则执行 else 中的语句
if(布尔表达式){
// 语句1
}else{
// 语句2
}
比如,上面代码:
int score = 92;
if(score >= 90){
System.out.println("yes");
}else{
System.out.println("no");
}
语法格式 3:可以处理多种条件的判断,表达式 1 成立执行语句 1,否则判断表达式 2,成立则执行语句 2,都不成立则执行语句 3。
if(布尔表达式1){
// 语句1
}else if(布尔表达式2){
// 语句2
}else{
// 语句3
}
像根据分数判断成绩等级就可以用这种格式:
if(score >= 90){
System.out.println("优秀");
}else if(score >= 80 && score < 90){
System.out.println("良好");
}else if(score >= 70 && score < 80){
System.out.println("中等");
}else if(score >= 60 && score < 70){
System.out.println("及格");
}else if(score >= 0 && score < 60){
System.out.println("不及格");
}else{
System.out.println("错误数据");
}
在使用 if 语句时,有一些注意事项:
代码风格上,推荐将{放在 if/else 同一行,使代码更紧凑。
避免分号问题,不要在 if 后面多写分号,否则可能导致逻辑错误。
注意悬垂 else 问题,else 会和最接近的 if 匹配,实际开发中最好加上大括号来明确匹配关系
2. switch 语句
switch 语句也是一种分支结构,它的基本语法如下:
switch(表达式){
case 常量值1:{
语句1;
break;
}
case 常量值2:{
语句2;
break;
}
default:{
内容都不满足时执行语句;
break;
}
}
其执行流程是:先计算表达式的值,然后和 case 后的常量值依次比较,一旦有匹配的就执行该项下的语句,直到遇到 break 时结束;如果没有匹配的,就执行 default 中的语句
比如根据 day 的值输出星期几:
int day = 1;
switch(day) {
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
// ...省略其他case
default:
System.out.println("输入有误");
break;
}
使用 switch 语句有一些限制和注意事项:
- 多个 case 后的常量值不可以重复。
- switch 括号内的表达式类型只能是 byte、char、short、int、String 常量串、枚举类型,不能是 long、double 等类型。
- break 不要遗漏,否则会失去 “多分支选择” 的效果,导致后续 case 的语句也会被执行。
- switch 不适合表达复杂的条件,比如判断一个数是否在某个范围内。
- 虽然支持嵌套,但不推荐,会影响代码的美观和可读性
四、循环结构:重复的力量
循环结构可以让代码重复执行,在 Java 中主要有 while 循环、for 循环和 do-while 循环。
1. while 循环
while 循环的基本语法格式为:
while(循环条件){
循环语句;
}
例如,打印 1 到 10 的数字:
int num = 1;
while (num <= 10) {
System.out.println(num);
num++;
}
使用 while 循环时要注意:
和 if 类似,while 下面的语句可以不写{,但只能支持一条语句,建议加上{。
{建议和 while 写在同一行。
不要在 while 后面多写分号,否则可能导致循环不能正确执行,甚至出现死循环
2. for 循环
for 循环的基本语法格式为:
for(表达式①;布尔表达式②;表达式③){
表达式④;
}
其中,表达式①用于初始化循环变量,在循环最开始时执行,且只执行一次;表达式②是循环条件,满足则循环继续,否则循环结束;表达式③用于更新循环变量。其执行过程是①→②→④→③→②→④→③… 直到②为 false 时循环结束
例如,打印 1 到 10 的数字:
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
for 循环的注意事项和 while 循环类似:
- 建议加上
{
,即使只有一条语句。 {
建议和 for 写在同一行。- 不要多写分号。
- 可以用 continue 结束单趟循环,用 break 结束整个循环
3. do-while 循环
do-while 循环的基本语法是:
do{
循环语句;
}while(循环条件);
do-while 循环先执行循环语句,再判定循环条件,循环条件成立则继续执行,否则循环结束
例如,打印 1 到 10:
int num = 1;
do {
System.out.println(num);
num++;
} while (num <= 10);
do-while 循环的注意事项:
- 不要忘记最后的分号。
- 在实际开发中,do-while 循环很少用到,更推荐使用 for 和 while 循环
4. break 和 continue
- break 的功能是让循环提前结束。例如,找到 100 到 200 中第一个 3 的倍数:
int num = 100;
while (num <= 200) {
if (num % 3 == 0) {
System.out.println("找到了 3 的倍数, 为:" + num);
break;
}
num++;
}
- continue 的功能是跳过这次循环,立即进入下次循环。例如,找到 100 到 200 中所有 3 的倍数:
int num = 100;
while (num <= 200) {
if (num % 3 != 0) {
num++;
continue;
}
System.out.println("找到了 3 的倍数, 为:" + num);
num++;
}
四、输入输出
1. 输出到控制台
Java 中输出到控制台的方式主要有三种:
System.out.println(msg)
:输出一个字符串,带换行。System.out.print(msg)
:输出一个字符串,不带换行。System.out.printf(format, msg)
:格式化输出,和 C 语言的 printf 类似
System.out.println("hello world");
int x = 10;
System.out.printf("x = %d\n", x);
2. 从键盘输入
使用 Scanner 可以从键盘读取输入,需要先导入java.util.Scanner
包。例如:
import java.util.Scanner;
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(); // 记得关闭
循环输入多个数据时,在 Windows 上使用ctrl + z
结束输入