条件语句
条件语句让程序根据不同情况执行不同代码,本课学习Java中的条件判断。
if语句
if语句是最基本的条件判断。
语法
JAVA
if (条件) {
// 条件为true时执行
}
示例:简单if
JAVA
public class IfDemo {
public static void main(String[] args) {
int age = 20;
if (age >= 18) {
System.out.println("你是成年人");
}
}
}
if-else语句
当条件为false时,执行else中的代码。
语法
JAVA
if (条件) {
// 条件为true时执行
} else {
// 条件为false时执行
}
示例:if-else
JAVA
public class IfElseDemo {
public static void main(String[] args) {
int age = 15;
if (age >= 18) {
System.out.println("你是成年人");
} else {
System.out.println("你是未成年人");
}
}
}
if-else if-else语句
多个条件判断时使用。
语法
JAVA
if (条件1) {
// 条件1为true时执行
} else if (条件2) {
// 条件2为true时执行
} else if (条件3) {
// 条件3为true时执行
} else {
// 以上条件都不满足时执行
}
示例:成绩等级
JAVA
public class GradeDemo {
public static void main(String[] args) {
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("不及格");
}
}
}
💡 注意: 条件判断是从上到下依次执行的,一旦某个条件为true,执行对应代码后就不再判断后面的条件。
嵌套if
if语句可以嵌套使用。
示例:嵌套if
JAVA
public class NestedIfDemo {
public static void main(String[] args) {
int age = 25;
boolean hasID = true;
if (age >= 18) {
if (hasID) {
System.out.println("可以进入");
} else {
System.out.println("需要出示身份证");
}
} else {
System.out.println("未成年人不能进入");
}
}
}
switch语句
switch适合对一个变量进行多个固定值的判断。
语法
JAVA
switch (变量) {
case 值1:
// 变量等于值1时执行
break;
case 值2:
// 变量等于值2时执行
break;
default:
// 以上都不匹配时执行
}
示例:星期几
JAVA
public class SwitchDemo {
public static void main(String[] args) {
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("无效的日期");
}
}
}
⚠️ break的作用: 如果不加break,程序会继续执行后面的case,这叫"穿透"。
switch穿透的应用
有时候穿透是有用的,比如判断周末:
JAVA
public class SwitchFallThrough {
public static void main(String[] args) {
int day = 6;
String type;
switch (day) {
case 1:
case 2:
case 3:
case 4:
case 5:
type = "工作日";
break;
case 6:
case 7:
type = "周末";
break;
default:
type = "无效";
}
System.out.println("第" + day + "天是" + type);
}
}
增强switch(Java 14+)
Java 14引入了增强的switch语法,更简洁:
JAVA
public class EnhancedSwitch {
public static void main(String[] args) {
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); // 星期三
}
}
Scanner获取用户输入
Scanner类可以获取用户的键盘输入。
使用步骤
JAVA
// 1. 导入Scanner类
import java.util.Scanner;
// 2. 创建Scanner对象
Scanner scanner = new Scanner(System.in);
// 3. 读取输入
int num = scanner.nextInt(); // 读取整数
double d = scanner.nextDouble(); // 读取浮点数
String s = scanner.nextLine(); // 读取一行字符串
// 4. 关闭scanner
scanner.close();
示例:用户输入判断
JAVA
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入你的年龄:");
int age = scanner.nextInt();
if (age >= 18) {
System.out.println("你是成年人");
} else {
System.out.println("你是未成年人");
}
scanner.close();
}
}
示例:简易计算器
JAVA
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个数:");
double num1 = scanner.nextDouble();
System.out.print("请输入运算符(+ - * /):");
char operator = scanner.next().charAt(0);
System.out.print("请输入第二个数:");
double num2 = scanner.nextDouble();
double result;
switch (operator) {
case '+':
result = num1 + num2;
System.out.println(num1 + " + " + num2 + " = " + result);
break;
case '-':
result = num1 - num2;
System.out.println(num1 + " - " + num2 + " = " + result);
break;
case '*':
result = num1 * num2;
System.out.println(num1 + " * " + num2 + " = " + result);
break;
case '/':
if (num2 != 0) {
result = num1 / num2;
System.out.println(num1 + " / " + num2 + " = " + result);
} else {
System.out.println("错误:除数不能为0");
}
break;
default:
System.out.println("错误:不支持的运算符");
}
scanner.close();
}
}
❓ 常见问题
Q if条件必须用括号吗?
A 是的,条件必须用括号包裹。即使只有一条语句,也建议用花括号包裹代码块。
Q switch支持哪些类型?
A switch支持byte、short、int、char、String(Java 7+)、enum。不支持long、float、double。
Q break可以省略吗?
A 可以省略,但会导致穿透。如果故意利用穿透,需要加注释说明。
📖 小节
- if用于单条件判断,if-else用于二选一,if-else if-else用于多选一
- switch适合对一个变量进行多个固定值的判断
- break防止switch穿透
- Scanner可以获取用户键盘输入
📝 作业
- 闰年判断: 输入年份,判断是否是闰年
- 成绩等级: 输入分数(0-100),输出等级(优秀/良好/中等/及格/不及格)
- 计算器: 使用Scanner实现一个简易计算器
下一课
下一课我们将学习 循环结构,让程序重复执行某些操作。



