Java的流程控制语句之选择结构

分类:

1. 顺序结构 2. 选择结构 3. 循环结构

顺序结构

意思:从上向下,依次执行。

选择结构

java语言中提供了两种选择结构语句

1.if语句
  2.swith语句

if语句

if语句的注意事项:
           A:关系表的式无论简单还是复杂,结果必须是boolean类型
           B:if语句控制的语句体如果是一条语句体,大括号可以省略
             如果是多条语句体,就不可省略,建议永远不要省略。
           C:一般来说:有左大括号没有分号;有分号就没有左大括号   
 if语句有三种格式
//if语句的第一种格式:
   if(关系表达式){
	   语句体
   }
执行流程;
        首先判断关系表达式看其结果是true还是false
		如果是true就执行语句体
		如果是false就不执行语句体
//if语句的第二种格式:
     if(关系表达式){
		语句体1;
     }else{ 
	 语句体2;
	 }		
执行流程;
        首先判断关系表达式看其结果是true还是false
		如果是true就执行语句体1
		如果是false就不执行语句体2	 
  if语句的第二种格式也完成了三元运算符可以完成的效果  
  所以,我们认为在一定范围它们可以转换
  区别:
   三元可以用,if语句实现,反之不行
   什么时候if语句实现但不能用三元改进呢?
   当if语句控制的操作是一个输出语句的时候不成立
   因为三元运算符是一个运算符,运算符操作完毕后就应该有一个结果,而不是一个输出。
//if语句的第三种格式:
  if(关系表达式1){
	  语句体1;
  }else if(关系表达式2){
	  语句体2;
  }
  ……
  else{
	  语句体n+1;
  }
执行流程;
        首先判断关系表达式1看其结果是true还是false
		如果是true就执行语句体1 if语句结束
		如果是false就继续判断关系表达式2看其结果是	 
        true还是false
        如果是true就执行语句体2if语句结束
        如果是false就继续判断关系表达式……看其结果是	 
        true还是false
        ……
	    如果没有任何关系表达式为false,就执行语句体n+1;

if语句例题和代码实现
if语句的使用场景;

  1. 针对表达式是一个Boolean类型的判断
  2. 针对一个范围的判断
题一:键盘录入x的值,计算出y的并输出
      x>=3     y = 2x + 1
	 -1<=x<3    y = 2x
	  x<=-1     y = 2x - 1
		
import java.util.Scanner;
class YunSuan{
	public static void main(String[] args){
	Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个数据");
    int x = sc.nextInt();
    int y;	
	if (x>=3){
		y = 2*x + 1;
	}else if(-1<=x && x<3){
		y = 2*x;
	}else if(x<=-1){
		y = 2*x - 1;
	}
	System.out.println("y:"+y);
	}
}
题二:键盘录入月份的值,输出对应的季节  
import java.util.Scanner;
class Li{
	public static void main(String[] args){
	Scanner sc = new Scanner(System.in);
    System.out.println("请输入一个数据");
    int x = sc.nextInt();
	if(x<1 || x>12){
		System.out.println("输入有误");
	}else if ( 3<=x && x>=4){
		System.out.println("春");
	}else if(6<=x && x<=8){
		System.out.println("夏");
	}else if(x>=9 && x<=11){
		System.out.println("秋");
	}else  {
		System.out.println("冬");
	}
	
  }
}
题三:获取三个数的最大值
//此案例主要是为了讲解if语句是可以嵌套的,而且是可以任意的嵌套
class Li{
	int a = 10;
	int b = 20;
	int c = 30;
	int max;
	if (a>b){
		if(a>c){
			max = a;
		}else{
			max = c; 
		}
	}else{
		if(b>c){
			max = b;
		}else {
			max = c;
		}
		System.out.println("max:"+max);
	}
}

switch语句

switch语句格式:
      switch(表达式){
		  case值1:
		         语句体1;
				 break;
		  case值2:
                 语句体2;
                 break;
     …………
      default:
            语句体:n+1;
                 break;			
	  }
格式解释:
switch:表示这是个switch选择结构
表达式:这个地方的取值的是有限制的
       byte short int char
	   JDK5以后可以是枚举
	   JDK7以后可以是字符串
case:后面跟的是要和表达式进行比较的值
语句体:要执行的代码
break;表示中断,结束的意思,可以控制switch语句的结束
default:当所有的值和表达是不匹配的时候,就执行default控制的语句。

执行流程:
      首先计算出表达式的值
	  其次和case一次比较一旦有对应的值,就会执行相应的
	  语句,在执行的过程中遇到break就结束
	  最好,如果所有的case都和表达式的值不匹配,就会执行
	  default语句体部分,然后程序结束
switch语句使用的注意事项:
   一.case后面只能是常量不可以是变量;
   二.多个case后面的值不可以重复;
   三. default可以省略但是不建议,
       因为它的作用是对不真确的情况给出提示  
   四.break可以省略,但是结果可能不是我们想要的
      它会出case穿透现象,所以现建议不省略
   五.default可以出现在任意位置。建议放到最后。
     因为它代表所有的case都和表达式的值不匹配才执行default语句
   六.switch语句的结束条件;
      a:遇到break就结束。
	  b:执行到末尾就结束了。

switch语句例题和代码实现

//摸拟单向选择题
import java.util.Scanner;
class Li{
	public static void main(String[] args){
		Scanner sc = new Scanner (System.in);
		
		System.out.println("下面的几个人你最爱谁");
		System.out.println("65 林青霞");
		System.out.println("66 张曼玉");
		System.out.println("67 刘德华");
		System.out.println("68 王力红");
	    int x = sc.nextInt();
	     switch(x){
			 case 65:
			 System.out.println("恭喜选择正确");
			 break;
			 case 66:
			 System.out.println("选择错误");
			 break;
			 case 67:
			 System.out.println("选择错误");
			 break;
			 case 68:
			 System.out.println("选择错误");
			 break;
		 default:
		   System.out.println("你输入的数据有误");
			 break;
		 }
	}
}

if语句和switch语句的区别:
if语句:

  1. 针对结果是Boolean类型的判断
  2. 针对一个范围的判断
  3. 针对几个常量值的判断

switch语句: 针对几个常量值的判断