Bootstrap

8、Java基础——结构化程序设计、if选择结构

目录

课前先导

一、结构化程序设计

二、if选择结构

1、单分支if选择结构

2、双分支if选择结构(if - else结构)

3、多分支if选择结构

4、嵌套if选择结构


课前先导

我们之前编写的程序都是从上往下每条语句都按顺序执行,这就是结构化程序设计中的顺序结构,

结构化编程一共有三个流程控制结构,分别是:顺序结构、选择结构、循环结构

一、结构化程序设计

(1)在Java中有3种流程控制结构:顺序结构选择结构循环结构

(2)顺序结构:顺序结构是指程序从上向下依次执行每条语句的结构,中间没有任何的判断和跳转。

(3)选择结构:选择结构是根据条件判断的结果来选择执行不同的代码。选择结构可以细分为单分支结构、双分支结构和多分支结构。Java提供了if控制语句和switch语句来实现选择结构。

(4)循环结构:循环结构是根据判断条件来重复性地执行某段代码。Java提供了while语句、do-while语句、for语句来实现循环。JDK5.0新提供了增强for循环,可以更简单的方式来遍历数组和集合。

二、if选择结构

首先我们先来看下英文单词: if      如果

如果我发财了我请你喝娃哈哈 :这里我发财了是条件,只有我发财了才请你喝娃哈哈,

if后面跟的是条件判断语句,只有满足了判断条件,才会执行if选择结构里的代码,关于条件判断只有两种结果,要么正确,要么错误,所以我们的条件表达式返回的是个布尔值

1、单分支if选择结构

代码格式:

if(条件){

   //代码块

}

 这里我们举个例子:如果张三这个月工资不低于5000块钱,那么他晚上就去吃烧烤

public static void main(String[] args){
		Scanner sc = new Scanner(System.in);//从控制台获得数据
		double money; //用来存工资
		
		System.out.print("你这个月的工资是:");
		money = sc.nextDouble(); //从控制台接收double类型的数据
		
		if(money >= 5000){
			System.out.println("晚上吃烧烤");
			
		}
		
	}

 通过上图我们可以看到,不满足条件判断语句,就不会进入if结构,里面的代码就不会执行

2、双分支if选择结构(if - else结构)

我们来看另一个英语单词: else   否则,另外的

 代码格式:

if(条件){

  //代码块1

}else{

  //代码块2

}

 我们继续张三发工资的事,如果张三这个月工资不低于5000块钱,那么他晚上就去吃烧烤,否则就在家吃面条

public static void main(String[] args){
		Scanner sc = new Scanner(System.in);//从控制台获得数据
		double money; //用来存工资
		
		System.out.print("你这个月的工资是:");
		money = sc.nextDouble(); //从控制台接收double类型的数据
		
		if(money >= 5000){
			System.out.println("晚上吃烧烤");
			
		}else{
			System.out.println("在家吃面条");
		}
		
	}

 通过上面的运行结果我们可以看到,不满足if的判断条件时,就会进入else结构,运行else结构里面的代码。

3、多分支if选择结构

还是张三发工资,如果张三这个月工资高于六千,他就给自己买一件新衣服;如果工资高于5000;那么他晚上就去吃烧烤;如果工资高于4000,他就在家点外卖;低于4000,就在家吃面条

public static void main(String[] args){
		Scanner sc = new Scanner(System.in);//从控制台获得数据
		double money; //用来存工资
		
		System.out.print("你这个月的工资是:");
		money = sc.nextDouble(); //从控制台接收double类型的数据
		
		if(money >= 6000){
			System.out.println("买一件衣服!");
		}
		if(money >= 5000){
			System.out.println("晚上吃烧烤!");
		}
		if(money >= 4000){
			System.out.println("在家点外卖!");
		}
		if(money <= 4000){
			System.out.println("在家吃面条");
		}
		
	}

这样写看似没有问题,我们运行一下

 我们得到的结果应该是“晚上吃烧烤”,可运行结果不是我们想要的结果。因为我们的程序是从上往下按顺序运行的,我们这样写,每个if结构都做了判断,所以5500大于5000,又大于4000,会出现两个结果,我们看下面的代码

public static void main(String[] args){
		Scanner sc = new Scanner(System.in);//从控制台获得数据
		double money; //用来存工资
		
		System.out.print("你这个月的工资是:");
		money = sc.nextDouble(); //从控制台接收double类型的数据
		
		if(money >= 6000){
			
			System.out.println("买一件衣服!");
		}else if(money >= 5000){
			System.out.println("晚上吃烧烤!");
		}else if(money >= 4000){
			System.out.println("在家点外卖!");
		}else if(money <= 4000){
			System.out.println("在家吃面条");
		}
		
	}

 这样写就没问题了。

总结:

当单个if选择结构无法完成需求时,选用多重if选择结构

语法格式:

if(条件1){

  //代码块1

}else if(条件2){

  //代码块2

}else if(条件3){

  //代码块3

}else if(条件4){

  //代码块4

}else{

  //代码块n

}

执行规律:

由上而下判断if条件,当判断条件为true是,执行相应条件的代码块,然后跳出判断结构,继续执行下面的语句;如果执行完所有的判断条件没有为true的,则执行else中的代码块。还有一点值得注意的地方

public static void main(String[] args){
		Scanner sc = new Scanner(System.in);//从控制台获得数据
		double money; //用来存工资
		
		System.out.print("你这个月的工资是:");
		money = sc.nextDouble(); //从控制台接收double类型的数据
		
		if(money >= 5000){
			System.out.println("晚上吃烧烤!");
		}else if(money >= 6000){
			System.out.println("买一件衣服!");
		}else if(money >= 4000){
			System.out.println("在家点外卖!");
		}else if(money <= 4000){
			System.out.println("在家吃面条");
		}
		
	}

 输入6500,我们想要的结果是“买一件衣服”;而程序运行结果却不是!因为我们的程序是按顺序结构执行的,6500大于5000,条件判断语句返回的是true,他就会执行里面的代码块,执行完之后会直接跳出判断语句,所以我们编码的时候要注意一下判断条件的顺序!

总结:

(1)不论多分支if语句中有多少个条件,只会执行符合条件的一个,如果没有符合条件的,则执行else子句中的语句;

(2)else if语句可以有多个;

(3)else语句可以省略;

(4)要注意多分支if语句的各个条件的排列顺序

4、嵌套if选择结构

if(条件1){

    if(条件2){

    //代码块2

    }else{

    //代码块2

    }

}else{

    if(条件3){

    //代码块3

    }else{

    //代码块3

    }
}

 嵌套if控制语句可以通过外层语句和内层语句的协作,增强程序的灵活性

我们继续张三的故事;如果工资不低于5000,和朋友一起出去,否则就在家;和朋友一起出去,如果工资不低于6000,请朋友吃饭,不低于7000,请朋友洗脚;如果在家,工资不低于于4000点外卖,低于4000吃面条

public static void main(String[] args){
		Scanner sc = new Scanner(System.in);//从控制台获得数据
		double money; //用来存工资
		
		System.out.print("你这个月的工资是:");
		money = sc.nextDouble(); //从控制台接收double类型的数据
		
		if(money >= 5000){
			System.out.println("和朋友一起出去耍!");
			if(money >= 7000){
				System.out.println("请朋友洗脚!");
			}else if(money >= 6000){
				System.out.println("请朋友吃饭!");
			}else{
				System.out.println("一起吃炸串!");
			}
		}else {
			System.out.println("自己在家吃饭!");
			if(money >= 4000){
				System.out.println("点外卖!");
			}else{
				System.out.println("吃面条!");
			}
		}
		
	}

 执行规律:

(1)先对外层的条件1进行判断,决定进入if或者else代码块;

(2)进入内层代码块后,再对内层的条件进行判断。

今天是9月30号,明天就是国庆节了,今天我们的内容就少一点,祝大家国庆快乐,假期里过的开心,别忘了做作业哦:http://t.csdn.cn/GuQ6B。今天就到此结束,我是一米八,有腹肌,低于半小时你报警的Loveletter,觉得内容不错小伙伴可以点点关注,我们下篇博文见! 再见!

;