流程控制语句:if/else, switch 与循环的高效使用技巧

流程控制:让你的代码跳起华尔兹

各位看官,咱们今天聊点程序员的家常,说说代码里的“流程控制”。 听起来高大上,其实说白了,就是控制你的代码该干什么、什么时候干、以及怎么干的“指挥官”。 想象一下,你写了一大段代码,如果没有流程控制,它就像脱缰的野马,一股脑儿地从头跑到尾,完全不考虑实际情况。这肯定不行!我们需要让它像训练有素的舞者,根据不同的音乐节奏,跳出不同的舞步。

今天,我们就来好好学习一下这门“舞蹈编排”艺术,重点聚焦在if/elseswitch和循环这三大“舞步”上。

if/else:代码世界的“选择题”

if/else语句可以说是流程控制里最基础、也是最常用的“选择题”。 它的语法很简单:

if (条件) {
  // 如果条件为真,就执行这里的代码
} else {
  // 如果条件为假,就执行这里的代码
}

我们可以把if想象成一个“门卫”,只有符合条件的人才能进入“if的大门”,否则就只能去“else的房间”。

例子:判断奇偶数

这是一个经典的例子,判断一个数是奇数还是偶数:

int number = 7;

if (number % 2 == 0) {
  System.out.println("这是一个偶数");
} else {
  System.out.println("这是一个奇数");
}

在这个例子里,number % 2 == 0 就是我们的“条件”。 如果number除以2的余数是0,就说明它是偶数,否则就是奇数。

嵌套的if/else:更复杂的选择

有时候,我们需要进行更复杂的判断,就需要用到嵌套的if/else语句。 就像俄罗斯套娃一样,一个if/else里面可以再套一个if/else

例子:判断成绩等级

假设我们需要根据学生的成绩,来判断他们的等级:

int score = 85;

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

在这个例子里,我们用了多个else if来判断不同的分数段。 这种嵌套的方式,可以让我们处理更加复杂的情况。

if/else的使用技巧

  • 简洁明了: 尽量让你的if条件简单易懂。 复杂的条件可以用括号或者提取成单独的函数来提高可读性。
  • 避免过度嵌套: 过多的嵌套会使代码难以理解和维护。 如果嵌套层数太深,可以考虑使用switch语句或者重构代码。
  • 考虑默认情况:if/else语句中,一定要考虑所有可能的情况。 如果没有明确的处理,应该提供一个默认的else分支来处理未知情况。
  • 善用三元运算符: 对于简单的if/else判断,可以使用三元运算符condition ? value1 : value2来简化代码。 例如:
int age = 20;
String message = age >= 18 ? "已成年" : "未成年";
System.out.println(message);

switch:代码世界的“多选题”

switch语句是另一种常用的流程控制语句, 它可以根据不同的值,来执行不同的代码块。 它的语法如下:

switch (表达式) {
  case 值1:
    // 如果表达式的值等于值1,就执行这里的代码
    break;
  case 值2:
    // 如果表达式的值等于值2,就执行这里的代码
    break;
  // ... 更多 case
  default:
    // 如果表达式的值不等于任何一个 case 的值,就执行这里的代码
}

switch语句就像一个“多选题”,表达式的值就是题干,每个case就是选项,default就是“以上皆不选”。

例子:判断星期几

假设我们需要根据数字来判断星期几:

int day = 3;

switch (day) {
  case 1:
    System.out.println("星期一");
    break;
  case 2:
    System.out.println("星期二");
    break;
  case 3:
    System.out.println("星期三");
    break;
  case 4:
    System.out.println("星期四");
    break;
  case 5:
    System.out.println("星期五");
    break;
  case 6:
    System.out.println("星期六");
    break;
  case 7:
    System.out.println("星期日");
    break;
  default:
    System.out.println("输入错误");
}

在这个例子里,day就是我们的“表达式”,每个case对应一个星期几。 注意,每个case后面都要加上break语句,否则程序会继续执行下一个case的代码,这通常不是我们想要的结果。

switch的使用技巧

  • break的重要性: 永远不要忘记在每个case后面加上break语句,除非你真的想要“穿透”到下一个case
  • default的必要性: 最好在switch语句中提供一个default分支,用来处理未知或者错误的情况。
  • 类型限制: 在Java中,switch语句的表达式只能是byteshortintcharenum或者String类型。
  • Java 12+ 的增强: Java 12 引入了增强的switch语句,可以简化代码,例如:
int day = 3;
String dayName = switch (day) {
    case 1 -> "星期一";
    case 2 -> "星期二";
    case 3 -> "星期三";
    case 4 -> "星期四";
    case 5 -> "星期五";
    case 6 -> "星期六";
    case 7 -> "星期日";
    default -> "输入错误";
};
System.out.println(dayName);

这种写法更加简洁,也避免了忘记break语句的风险。

循环:让代码重复“跳舞”

循环语句可以让我们的代码重复执行某段代码, 就像跳舞一样,一遍又一遍地重复同样的动作。 常用的循环语句有forwhiledo-while

for循环:有规律的“舞蹈”

for循环通常用于已知循环次数的情况。 它的语法如下:

for (初始化; 条件; 更新) {
  // 循环体
}
  • 初始化: 在循环开始前执行一次,通常用于初始化循环变量。
  • 条件: 每次循环前都会判断条件是否为真,如果为假,循环结束。
  • 更新: 每次循环结束后执行,通常用于更新循环变量。

例子:打印数字1到10

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

在这个例子里,我们用i作为循环变量,从1开始,每次循环增加1,直到i大于10为止。

while循环:只要你想跳,就能一直跳

while循环通常用于不知道循环次数,只需要满足某个条件就一直循环的情况。 它的语法如下:

while (条件) {
  // 循环体
}

例子:猜数字游戏

import java.util.Random;
import java.util.Scanner;

public class GuessNumber {
    public static void main(String[] args) {
        Random random = new Random();
        int randomNumber = random.nextInt(100) + 1; // 生成1-100的随机数
        Scanner scanner = new Scanner(System.in);
        int guess = 0;
        int attempts = 0;

        while (guess != randomNumber) {
            System.out.print("请猜一个1-100之间的数字:");
            guess = scanner.nextInt();
            attempts++;

            if (guess < randomNumber) {
                System.out.println("猜小了!");
            } else if (guess > randomNumber) {
                System.out.println("猜大了!");
            } else {
                System.out.println("恭喜你猜对了!你猜了" + attempts + "次。");
            }
        }

        scanner.close();
    }
}

在这个例子里,只要guess不等于randomNumber,循环就会一直执行。

do-while循环:至少跳一次的“舞蹈”

do-while循环和while循环类似,唯一的区别是,do-while循环会先执行一次循环体,然后再判断条件。 它的语法如下:

do {
  // 循环体
} while (条件);

例子:输入验证

import java.util.Scanner;

public class InputValidation {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int number;

        do {
            System.out.print("请输入一个大于0的数字:");
            number = scanner.nextInt();
        } while (number <= 0);

        System.out.println("你输入的数字是:" + number);
        scanner.close();
    }
}

在这个例子里,我们用do-while循环来确保用户输入的数字大于0。 即使第一次输入的数字小于等于0,循环体也会至少执行一次。

循环的使用技巧

  • 避免死循环: 确保你的循环条件最终会变为假,否则程序会陷入死循环。
  • 优化循环体: 尽量减少循环体内的计算量,避免重复计算。
  • 使用breakcontinue break语句可以提前结束循环,continue语句可以跳过本次循环,直接进入下一次循环。
  • 嵌套循环: 循环也可以嵌套,就像跳双人舞一样。 但是要注意,过多的嵌套会降低代码的效率。

总结:让你的代码跳起优美的华尔兹

流程控制语句是编程的基础,掌握好它们,可以让你编写出更加灵活、高效的代码。 记住,if/else是选择题,switch是多选题,循环是重复跳舞。 灵活运用它们,让你的代码跳起优美的华尔兹吧!

希望这篇文章能给你带来一些启发,让你在编程的道路上更进一步。 祝你编码愉快!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注