流程控制——分支语句

if分支语句

if 概述:在某些情况下,需要当某一条件满足时才执行相应代码,条件不满足则执行其他代码。

if 四种形式:单分支、双分支、多分支、嵌套if

单分支

if (布尔表达式) { 
        //布尔表达式为true时需执行的代码;
}

双分支

双分支if语句可以通过三目运算来转换,但前提是双分支各语句中必须是一个表达式

if (布尔表达式) { 
        //布尔表达式为true时需执行的代码;  
 }else { 
        //布尔表达式为false时需执行的代码; 
}

多分支——多个语句块中只执行一个语句块

if(布尔表达式1){
        //布尔表达式1为true时执行的代码
 }else if(布尔表达式2){
        //布尔表达式1为false但是布尔表达式2为true时执行的代码
}else if(布尔表达式3){
        //布尔表达式1和布尔表达式2为false但是布尔表达式3为true时执行的代码
}else{
        //布尔表达式1、布尔表达式2和布尔表达式3均为false时执行的代码
}

嵌套if——一个分支结构中包含另一个完整分支结构:当有多个条件时分别判断多个条件可以提高程序可读性

if(布尔表达式1){
       //布尔表达式1为true时执行的代码
       if(布尔表达式2){
           //布尔表达式1和布尔表达式2均为true时执行的代码
      }else{
            //布尔表达式1为true,但布尔表达式2均为false时执行的代码
      }
 }else {
       //布尔表达式1为false时执行的代码
}

if分支语句中去掉括号,则对第一行代码有效

else不能单独使用

单分支和多分支的区别: 单分支语句会继续执行 下一行代码,多分支语句只执行一个语句块

例子:

某商城,在国庆节期间,根据用户积分数决定给用户送何种礼物,在控制台允许用户输入积分数x,根据用户的输入         在输出所送礼物。具体范围为:
x<5000,则输出“国庆节快乐,送您一章贺卡!”
5000 <=x<10000,则输出“国庆节快乐,送您一个杯子!” 
10000<=x<30000,则输出“国庆节快乐,送您一套餐具!” 

x >= 30000,则输出“国庆节快乐,送您一套精美骨质瓷器!

public class case1 {

	public static void main(String[] args) {
		int score = 5001;
		if(score<0){
			System.out.println("积分无效");
		}else{
			if(score<5000){
				System.out.println("国庆节快乐,送您一张贺卡"); // 可以没有大括号,默认只对第一行代码有效
			}else if(score>=5000 && score<10000){
				System.out.println("国庆节快乐,送您一个杯子");
			}else if(score>=10000 && score<30000){
				System.out.println("国庆节快乐,送您一套餐具");
			}else{
				System.out.println("国庆节快乐,送您一套精美骨质瓷器");	
			}
		}
	}
}                            运行结果:国庆节快乐,送您一个杯子
改进:
public class case2 {

	public static void main(String[] args) {
		int score = 5001;
		if(score<0)
			System.out.println("积分无效");
		else{
			if(score<5000)
				System.out.println("国庆节快乐,送您一张贺卡"); 
			else if(score<10000)
				System.out.println("国庆节快乐,送您一个杯子");
			  
			else if(score<30000)
				System.out.println("国庆节快乐,送您一套餐具");
			else
				System.out.println("国庆节快乐,送您一套精美骨质瓷器");
			        System.out.println("...............");
		}                              运行结果:国庆节快乐,送您一个杯子                                        
          }                                           ............
switch分支语句
switch ( 表达式 ) {  
	case 常量1 :
	当表达式的值等于整型常量1时执行的语句; 
	break;//当一种情况包含其他情况时
	case 常量2 :
	当表达式的值等于整型常量2时执行的语句; 
	break;
 	   ---
	default:
	当表达式的值不满足任何一个case的值时,执行的语句;
}
switch括号中的表达式结果类型可以是:byte、short、int、char以及枚举类型(JDK1.7中也允许是String类型);
为什么没有long、float、double和boolean

switch(i)不能用 long,double (表示的数值太大了) bool(只有ture和false两种类型 直接用 if else就欧克)

例子:

public class Aswitch1 {

	public static void main(String[] args) {
		String i = "4";
		switch (i){
		case "1" : 
			System.out.println("星期一");
			break;
		case "2":
			System.out.println("星期二");
			break;
		case "3":
			System.out.println("星期三");
			break;
		default :
			System.out.println("星期几");
			
		}
		System.out.println(".......");               运行结果:星期几
	}                                                             ..........
}
public class Aswitch2 {
	
	public static void main(String args[]){
		int i = 1;
		int k = 1;
		switch (i){
		case 1 : 
			System.out.println("星期一");  
			switch (k){
			    case 1:
				 	System.out.println("xingqiyi");
				 	break;
			}
			break;
		case 2:
			System.out.println("星期二");
			break;
		case 3:
			System.out.println("星期三");
			break;
		}
		System.out.println(".........");
	}
}

没有break和加第一个break, 程序输出结果是 星期一

 *             xingqiyi
星期二
星期三
........

     加上2  3 4 个break,程序输出结果为 星期一
                              xingqiyi
                               .........
break用于只结束其所在当前switch语句块程序或当前循环的运行,但不会影响其所在语句块外部代码的执行

return则是结束当前整个方法

例如:

public class Areturn {

	static{          //静态代码块,类加载的时候执行
		System.out.println(11111);
	}
	static void show(){
		
		System.out.println("hello world");
		return;
		
		/*
		 * return 不能用于代码块,如果放在System.out.println("hello world");语句之前,会报错
		 * return只结束其所在方法的运行。
		 */
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*
		 * 尽管main方法写在下面,但是程序先执行,操作系统经过翻译执行
		 */
		show();
		System.out.println("my mame is");
	}
	

此代码的运行结果为  11111

                                hello world

                                my name is

但是它的执行顺序为 1->3->2




猜你喜欢

转载自blog.csdn.net/qq_40831381/article/details/79796265