chapter03 流程控制语句
本章目标
1.为什么要使用if语句?
2.有哪些if语句?使用场合分别在哪?
3.为什么要使用switch?
4.为什么要使用循环?
5.有哪些循环?
6.Break与continue的作用是什么?
一、 if语句
1.为什么要使用if语句
示例:
本次期末考试,小明的妈妈对小明说,如果这次的考试成绩能在95分,那么我就会奖励你一台笔记本电脑!
package com.neusoft;
import java.util.Scanner;
public class DemoIf {
/**
* 本次期末考试,小明的妈妈说如果这次考试能在95以上,就奖励他一台笔记本电脑。
*/
public static void main(String[] args) {
// 定义扫描器对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入小明的成绩");
//定义成绩变量
int score = sc.nextInt();
//使用if语句来比较分数是不是大于95分
if(score>=95&&score<=100){
//满足条件后获得奖励
System.out.println("小明将获得笔记本电脑");
}else{
//不满足条件输出结果
System.out.println("小明不能获得笔记本电脑");
}
}
}
使用if语句可以做到,当满足一定条件的情况下,可以做到某些事情!
编写if语句2步走
a.找到条件
b.找到条件满足时要做的事情
2.语法:
If(条件){
当条件满足时,执行此处代码
}
二、 if语句有哪些?
a) 简单的if:上面的示例为简单的if结构
b) 复杂的if:当条件不满足时,会有另外的一个选择结果我们使用if….else
语法:if(条件){…..}else{….}
c) 多重if:当有多个条件进行选择时,或在某个数值区间进行选择的情况下,使用多重if。
语法:
if(条件1){}else if(条件2){….}else{….}
注意:多重if的条件顺序发生改变,结果会发生改变
d) switch:
i. 为什么要使用switch结构?
1. 使用switch结构可以解决数值区间的判断问题。时代码更加的简洁。
ii. switch结构的注意事项
1. 语法:
switch(int/char){——-在jdk1.7以上版本中该条件的数据类型增加了String类型
case1:执行语句;
break;
}
2. Switch结构中的case后的常量值不能重复
3. 条件顺序发生变化,结果不会改变
4. 每个case语句执行后,要有break。否则,语句会贯穿执行,直到结构结束,或遇到下一个break.
iii. 与多重if的区别
1. 多重if:
a) 可以判断数值区间,以及非数值区间的多个条件的判断
b) 条件顺序发生变化,结果发生变化
2. switch:
a) 在jdk1.6以下只能判断数值区间
b) 条件发生变化,结果不会改变
e) 嵌套if
i. 为什么要使用嵌套if?
1. 学校举行短跑比赛,如果成绩在10秒,根据性别进入男子组或女子组决赛。
当需要满足一定条件的前提下,在进行进一步的选择判断的情况,要使用嵌套if。
ii. 语法:
if(条件1){
if(条件2){
执行语句1
}else{
执行语句2
}
}else{
执行语句3
}
iii. 什么是嵌套if?
1. 在一种完整的if结构中去嵌入另外一种完整的if结构。
2. 也可以嵌套switch。也可以在switch中嵌套if结构
3. 可以在else语句中嵌套另外的if结构或switch结构
三、 循环结构
a) 为什么要使用循环?
i. 使用循环可以解决日常生活中,在满足一定条件下,重复做一件事情的问题。
b) while循环:
i. 语法:while(条件判断){
循环操作体;
循环变量变更,防止死循环;
}
ii. 特点:先判断,再执行
c) do….while()
i. 语法:do…..while(条件判断);
ii. 特点:先执行,后判断
d) for循环:
i. 为什么要使用for循环?
1. for循环可以使在固定循环次数时,代码结构更加简洁
ii. 语法
1. for(int i=0;i<10;i++){循环操作;}
2. 小括号中,第一个部分为循环变量初始化,第二个部分为循环条件判断,第三个部分为迭代部分,用于改变循环变量,防止死循环
iii. 执行过程:
1. 先执行循环变量初始化
2. 判断条件是否成立
3. 如果第3步结果为true,执行循环操作部分
4. 执行迭代部分。
5. 执行步骤2,依次向下执行。如果条件不成立,循环结构结束
iv. 注意事项
e) 循环中出现的问题:
f) 循环的中断:
i. break;
1. 体育课老师要求跑4000米,当小红跑到1000米时受伤。无法继续完成任务。
ii. continue;
课后习题
1、使用for循环方法,打印出100-999之间的所有的水仙花数
package com.neusoft;
/**
*
* 使用for循环方法,找出100-999之间的所有的水仙花数
*
* @author Elvis
*
*/
public class ShuiXianHua {
public static void main(String[] args) {
//使用for循环遍历100-999的数字
for(int i = 100;i<=999;i++){
//定义个十百三个变量
int ge = i%10;
int shi = i/10%10;
int bai = i/100%10;
//判断是否为水仙花数
if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i){
//如果为水仙花数,则输出水仙花数
System.out.println(i);
}
}
}
}
2、 计算从1900年到2010年5月3日,总共多少天!(要求使用for循环、while循环、switch语句)
package com.neusoft;
/**
*
* 本实例用来计算从1900年到2010年5月3日,总共多少天!
* @author Elvis
*
*/
public class CalDays {
public static void main(String[] args) {
//定义一个月份变量
int month = 1;
//定义天数总数的变量
int sum = 0;
//利用for循环算出1900-2009年之间所有天数的总和
for(int year=1900;year<=2009;year++){
if(year%4==0&&year%100!=0||year%400==0){
sum+=366;
}else{
sum+=365;
}
}
//单独算2010年5个月的天数总和 用while循环,里面嵌套switch结构语句进行计算
while(month<=5)
{
switch(month)
{
case 1:
sum+=31;
break;
case 2:
sum+=28;
break;
case 3:
sum+=31;
break;
case 4:
sum+=30;
break;
case 5:
sum+=3;
break;
}
month++;
}
//输出1900-2010年5月3日之间一共有多少天
System.out.println("1900年到2010年5月3日之间一共有"+sum+"天");
}
}