Java 程序逻辑控制

一、程序逻辑控制的概述

程序的逻辑控制是指通过特定的语句来控制代码的执行顺序,它主要包括顺序结构、分支结构和循环结构。就像我们每天的生活,早上起床、洗漱、吃早饭,这是顺序执行;而选择好好学习还是虚度光阴,这是分支选择;日复一日地努力,这便是循环往复。

二、顺序结构:按部就班的执行

顺序结构是程序中最基本的执行方式,它按照代码书写的顺序一行一行地执行。比如下面的代码:

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结束输入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值