1. if / else if / else 怎么用?

用途:让程序"判断情况,走不同分支"。条件是一个 boolean 表达式(true 走 if,false 走 else)。

成绩等级判断(完整形态)
int score = 85;

if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 60) {      // 只有上面的不满足才检查这里
    System.out.println("及格");
} else {
    System.out.println("不及格");
}
及格

// 执行逻辑:从上往下找第一个成立的条件,进入后整个 if-else 结束
// 注意:else if 的顺序很重要!先写范围大的会挡住后面的

🎯 易错点

  • 条件判断用 == 不用 =(a = 5 是赋值,条件恒"真值 5",编译报错)
  • else if 顺序:从严格到宽松(90 分以上先判断)
  • 只有一条语句时可以省略大括号,但建议永远写大括号(防加代码时出错)

2. switch 和 if 怎么选?

switch:专门用于"一个值匹配多个固定选项"的场景——比 if-else 链更清晰。支持 int、char、String、枚举(JDK7+ 支持 String)。

switch 用法(含新写法)
String day = "MON";

// 经典写法(必须 break!否则穿透)
switch (day) {
    case "MON": System.out.println("周一"); break;
    case "FRI": System.out.println("周五"); break;
    default: System.out.println("其他");      // 都不匹配走这里
}

// JDK14+ 箭头写法(自动 break,推荐)
switch (day) {
    case "MON" -> System.out.println("周一");
    case "FRI" -> System.out.println("周五");
    default -> System.out.println("其他");
}

🎯 选择题:switch vs if

  • 选项固定且少(星期、状态枚举、菜单)→ switch
  • 条件复杂(范围、多个变量的组合)→ if-else
  • 经典面试坑:case 里忘了 break 会"穿透"继续执行下一个 case

3. for 循环:重复做事的关键

为什么需要循环:打印 1 到 100 不能写 100 行。循环让"重复的步骤"只写一遍。

for 循环四要素
// for (①初始化; ②条件; ④步进) { ③循环体 }
for (int i = 1; i <= 5; i++) {
    System.out.println("第 " + i + " 次");
}
第 1 次
第 2 次
第 3 次
第 4 次
第 5 次

// 执行顺序:① → ②(真)→③→④ → ②(真)→③→④ → ... → ②(假)结束
// 数数:从 0 开始是程序员习惯:for (int i = 0; i < 5; i++) 执行 5 次
经典题:求 1~100 的和
int sum = 0;                    // 累加器,初始 0
for (int i = 1; i <= 100; i++) {
    sum += i;                       // sum = sum + i
}
System.out.println(sum);
5050

🎯 必会套路

  • 累加器:sum += i(求总和);计数器:count++(数个数)
  • 循环从 0 还是 1 开始:数组/集合从 0(下标),数数从 1
  • 死循环:条件永远为真(for(;;))——新手要小心 i++ 忘写

4. while、do-while、break、continue?

break / continue 对比
// 打印 1~10,遇到 3 跳过(continue),遇到 7 停止(break)
for (int i = 1; i <= 10; i++) {
    if (i == 3) continue;     // 跳过本次:不打印 3,继续 4
    if (i == 7) break;       // 结束整个循环:7 不打印
    System.out.print(i + " ");
}
1 2 4 5 6

// while 经典:猜数字(次数不确定)
while (!isCorrect) {
    // 读取用户输入,判断
}
嵌套循环:打印乘法口诀表
for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {       // 内层只到 i
        System.out.print(j + "x" + i + "=" + (i * j) + " ");
    }
    System.out.println();                   // 外层每轮换行
}

✍️ 练习题(必做!循环是地基)

  • 1. 打印 1~100 中的所有偶数(提示:i%2==0)
  • 2. 求 1~100 中所有 7 的倍数的个数
  • 3. 打印九九乘法表(上面代码自己敲一遍)
  • 4. 打印 1~20,遇到 4 的倍数打印"过"(continue + 判断)
  • 5. 求 n!(阶乘):5! = 5×4×3×2×1 = 120
  • 6. 挑战:判断一个数是不是素数(质数)——用循环试除 2~√n

5. 怎么从键盘读入数据?(Scanner)

前面所有例子都是"程序自己算",但真正的程序要能接收用户输入。 Java 用 Scanner 读键盘,这一步在练习题里反复用到(第 17 题点餐菜单、第 25 题猜数字)。

Scanner 基本用法(完整可运行)
import java.util.Scanner;          // ① 必须 import

public class InputDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);   // ② 绑定到键盘

        System.out.print("请输入你的名字:");
        String name = sc.nextLine();          // 读一整行(含空格)

        System.out.print("请输入你的年龄:");
        int age = sc.nextInt();               // 读一个整数

        System.out.println("你好 " + name + ",你今年 " + age + " 岁");
        sc.close();                            // ③ 用完关闭
    }
}

常用读取方法:

🎯 新手必踩的三个坑

  • nextInt() 之后接 nextLine() 会读到空行:因为 nextInt 只读走数字,换行符还留在缓冲区。 解决:中间补一次 sc.nextLine(); 把换行符吃掉
  • 输入类型不匹配会抛异常:输入"abc"却调 nextInt() → InputMismatchException。 先用 hasNextInt() 判断,或包一层 try-catch
  • 忘记 import:import java.util.Scanner; 不写会编译报错"找不到符号"
⚠️ 本页面由 AI 生成,内容仅供参考,请以官方文档和实际源码为准。