目录
课前先导
我们之前编写的程序都是从上往下每条语句都按顺序执行,这就是结构化程序设计中的顺序结构,
结构化编程一共有三个流程控制结构,分别是:顺序结构、选择结构、循环结构
一、结构化程序设计
(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,觉得内容不错小伙伴可以点点关注,我们下篇博文见! 再见!