Java流程控制之选择结构
布尔表达式:
布尔表达式(Boolean expression)
是一段代码声明,它最终只有true
(真)和false
(假)两个取值。
最简单的布尔表达式是等式(equality
),这种布尔表达式用来测试一个值是否与另一个值相同。 例如:
2 == 4 ? --------------> false
1、if单选择结构
我们平常经常会面临选择,所以选择结构对于我们编程来说也是非常重要的,比如:
如果明天晴天,我们就一起去草场放风筝;
如图:
if(布尔表达式){ //如果布尔表达式为true将执行的语句 }
注意:if单选择结构:if语句对条件表达式进行一次判断,若判断为真,则执行下面的语句,否则跳过该语句。
实例助解:接收一个用户的输入,判断输入的是否为字符串"Liusu":
import java.util.Scanner; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //接收用户输入 System.out.print("请输入内容:"); String s = scanner.nextLine(); if (s.equals("Liusu")){ System.out.println("输入的是:"+s); } System.out.println("End"); scanner.close(); }
输出演示,如图:
注释:equals方法是用来进行字符串的比较的
2、if双选择结构
比如你去买键盘,键盘108元。如果你身上当时带有金额大于等于108元,那买键盘,否则,不买。(仅举例)
所以对于这样的需求用一个if就搞不定了,我们需要有两个判断,需要一个双选择结构,所以就有了if-else结构。
如图:
if(布尔表达式){ //如果布尔表达式的值为true }else{ //如果布尔表达式的值为false }
if双选择结构:当条件表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分。
实例助解:你去买键盘,键盘108元。如果你身上当时带有金额大于等于108元,那买键盘,否则,不买。
import java.util.Scanner; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入x值:"); int x = scanner.nextInt(); if (x>=108){ System.out.println("键盘"); }else { System.out.println("余额正在加载中..."); } scanner.close(); }
输出演示,如图:
3、if多选择结构
真实的情况还可能存在很多种,存在区间多级判断。在生活中我们很多时候的选择也不仅仅只有两个,所以我们需要一个多选择结构来处理这类问题!
如图:
if(布尔表达式 1){ //如果布尔表达式 1的值为true执行代码 }else if(布尔表达式 2){ //如果布尔表达式 2的值为true执行代码 }else if(布尔表达式 3){ //如果布尔表达式 3的值为true执行代码 }else { //如果以上布尔表达式都不为true执行代码 }
if多选择结构:if 语句后面可以跟 else if…else 语句,可以判断多种情况。
使用 if,else if,else 语句的时候,需要注意下面几点:
- if 语句至多有 1 个 else 语句。
- if 语句可以有若干个 else if 语句。
- else if在else之前
- 一个 else if 语句检测为 true,其他的 else if 、 else 语句都将跳过执行。
实例助解:简单的数值判断
public class Test { public static void main(String args[]){ int x = 66; if( x == 22 ){ System.out.print("x:22"); }else if( x == 44 ){ System.out.print("x:44"); }else if( x == 66 ){ System.out.print("x:66"); }else{ System.out.print("看来您的选择不在选项当中..."); } } }
输出演示,如图:
4、嵌套的if结构
注意:嵌套的 if…else
语句也是可以的。所有的流程控制语句都可以互相嵌套,互不影响!
if(布尔表达式 1){ 如果布尔表达式 1的值为true执行代码 if(布尔表达式 2){ 如果布尔表达式 2的值为true执行代码 } }
实例助解:判断x
public static void main(String args[]){ int x = 66; if( x > 22 ){ System.out.println("x>22"); if(x > 44){ System.out.println("x>44"); } } }
输出演示,如图:
5、switch多选择结构
多选择结构还有一个实现方式就是switch case
语句。switch case
语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch(expression){ case value : //语句 break; //可选 case value : //语句 break; //可选 //case... default : //可选 //语句 }
switch case 语句有如下规则:
switch
语句中的变量类型可以是:byte
、short
、int
、char
、字符串String
类型。switch
语句可以拥有多个 case 语句。case
语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。
注意:当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。(break语句非必须)
关于switch中default:
switch
语句可以包含一个default
分支------->最后一个分支(可以在任何位置,但建议在最后一个)。- default 在没有 case 语句的值和变量值相等的时候执行。
- default 分支不需要 break 语句。
实例助解:
public static void main(String args[]){ char grade = 'C'; switch(grade) { case 'A' : System.out.println("优秀"); break; case 'B' : case 'C' : System.out.println("良好"); break; case 'D' : System.out.println("及格"); break; case 'F' : System.out.println("谢谢参与!加油!"); break; default : System.out.println("您的等级已不在该范围内..."); } System.out.println("你的等级是 " + grade); }
输出演示,如图:
6、补充:case穿透
如果 case 语句块中没有 break 语句时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输
出。如果后续的 case 语句块有 break 语句则会跳出判断。
public static void main(String args[]){ int i = 4; switch(i){ case 0: System.out.println("0"); case 1: System.out.println("1"); case 2: System.out.println("2"); case 3: System.out.println("3"); case 4: System.out.println("4"); case 5: System.out.println("5"); break; default: System.out.println("default"); } }
输出演示,如图: