Java 分支语句详解 之If - else
在编程过程中,我们经常需要根据不同的条件执行不同的代码块,这种流程控制被称为 分支语句。在 Java 中,常见的分支控制结构有 if-else
和 switch
。本文将详细介绍 if 分支结构的使用方法以及相关的代码示例。
一、单分支控制语句 (if
)
基本语法:
if (条件表达式) {
// 执行代码块,当条件表达式为 true 时执行
}
流程图
说明:
当条件表达式为 true
时,执行代码块;如果为 false
,则不执行代码块。如果代码块中只有一条语句,可以省略大括号 {}
。
示例:
import java.util.Scanner;
public class If01 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age = in.nextInt();
if (age >= 18) {
System.out.println("小伙子好好学习,不然以后出去要搬砖哈~");
}
}
}
在这个例子中,程序会根据用户输入的年龄来判断是否输出提示语。只有当年龄大于等于 18 岁时,才会输出 “小伙子好好学习”。
二、双分支控制语句 (if-else
)
基本语法:
if (条件表达式) {
// 执行代码块1,当条件为 true 时执行
} else {
// 执行代码块2,当条件为 false 时执行
}
说明:
if
语句用于条件判断,如果条件表达式为 true
,则执行 if
块中的代码;否则,执行 else
块中的代码。
示例:
import java.util.Scanner;
public class If02 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = in.nextInt();
if (age >= 18) {
System.out.println("你已经满十八岁,不努力就去搬砖。");
} else {
System.out.println("你还小,好好学习~");
}
System.out.println("程序继续运行。。。");
}
}
这个例子展示了双分支控制。程序根据年龄输出不同的提示语,并且无论哪个分支执行,程序最后都会输出 “程序继续运行”。
三、多分支控制语句 (if-else if-else
)
基本语法:
if (条件表达式1) {
// 执行代码块1
} else if (条件表达式2) {
// 执行代码块2
} else {
// 执行代码块n
}
说明:
多分支控制语句用于处理多个条件,每个条件依次判断,直到找到一个满足条件的分支并执行其代码块。如果所有条件都不满足,执行 else
中的代码。
示例:
import java.util.Scanner;
public class If03 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入您的信用积分:");
int credit = in.nextInt();
if (credit >= 0 && credit <= 100) {
if (credit == 100) {
System.out.println("你的信用等级:信用极好!");
} else if (credit > 80) {
System.out.println("你的信用等级:信用优秀!");
} else if (credit >= 60) {
System.out.println("你的信用等级:信用一般!");
} else {
System.out.println("你的信用等级:信用不及格!");
}
} else {
System.out.println("输入有误,请重新输入!!!");
}
}
}
这个程序根据用户输入的信用积分来判断信用等级。每个信用等级有相应的分数区间,程序会根据不同的分数输出相应的信用等级。
四、嵌套分支控制语句
基本语法:
if (条件表达式1) {
if (条件表达式2) {
// 执行代码块1
} else {
// 执行代码块2
}
} else {
// 执行代码块n
}
说明:
在一个 if
或 else
分支中再嵌套 if-else
语句。注意不要嵌套太多层,避免代码过于复杂。
示例:
import java.util.Scanner;
public class NestedIf {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入您的所得分数:");
double score = in.nextDouble();
if (score > 8.0) {
System.out.println("请输入您的性别(男/女):");
char gender = in.next().charAt(0);
if (gender == '男') {
System.out.println("成功晋级,男子组!");
} else if (gender == '女') {
System.out.println("成功晋级,女子组!");
} else {
System.out.println("输入的性别无效!");
}
} else {
System.out.println("很遗憾,您未能晋级。");
}
}
}
这个例子展示了嵌套分支的使用,根据用户输入的分数和性别,决定用户是否晋级以及晋级的组别。
注意点: .charAt(0)
: 这是一个 String 类
的方法,用于获取字符串中的第一个字符。charAt(0) 会返回字符串的第一个字符,因此它在这里被用来从 next() 方法
返回的字符串中提取第一个字符。
五、示例:出票系统
需求:
根据淡旺季月份和年龄,打印票价:
- 旺季(4-10 月):成人(18-60 岁)票价为 60 元,儿童半价,老人三分之一价格。
- 淡季:成人票价为 40 元,儿童和老人票价为 20 元。
示例代码:
import java.util.Scanner;
public class TicketSystem {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入购票月份:");
int month = in.nextInt();
System.out.println("请输入您的年龄:");
int age = in.nextInt();
// 检查月份是否合理
if (month < 1 || month > 12) {
System.out.println("无效的月份,请输入1到12之间的月份。");
return;
}
// 旺季 4-10 月
if (month >= 4 && month <= 10) {
if (age >= 18 && age <= 60) {
System.out.println("你的票价为 60 元");
} else if (age < 18) {
System.out.println("你的票价为 30 元(儿童票)");
} else {
System.out.println("你的票价为 20 元(老人票)");
}
} else { // 淡季
if (age >= 18 && age <= 60) {
System.out.println("你的票价为 40 元");
} else {
System.out.println("你的票价为 20 元");
}
}
}
}
这个例子展示了如何根据月份和年龄判断票价,程序会根据用户输入的月份和年龄来决定输出不同的票价。
六、常见错误
等号 ==
与赋值符号 =
的区别:
在条件判断中,常见的错误是将比较符号 ==
误写为赋值符号 =
。例如:
boolean b = true;
if (b = false) {
System.out.println("a");
} else if (b) {
System.out.println("b");
} else if (!b) {
System.out.println("c");
} else {
System.out.println("d");
}
在这段代码中,if(b = false)
是将 b
赋值为 false
,因此输出会是 “c”。这个错误很常见,应当特别注意。
七、总结
分支语句是控制程序执行流程的重要工具。通过合理使用 if-else
和嵌套分支,可以让程序根据不同的条件执行不同的操作,极大地增强了程序的灵活性。注意在分支语句中合理组织条件,避免过多的嵌套,提高代码的可读性和维护性。