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
和嵌套分支,可以让程序根据不同的条件执行不同的操作,极大地增强了程序的灵活性。注意在分支语句中合理组织条件,避免过多的嵌套,提高代码的可读性和维护性。