Java中提供一些流程控制语句,来控制程序的执行流程,如有顺序结构(默认流程);分支结构;循环结构。重点了解分支结构和顺序结构。
分支结构
- if分支
if分支有三种格式
①格式一
if (条件表达式) {
语句体;
}
②格式二
if (条件表达式) {
语句体1;
} else {
语句体2;
}
③格式三;
if (条件表达式1) {
语句体1;
} else if(条件表达式2) {
语句体2;
} else if (条件表达式3) {
语句体3;
}
...
else {
语句体n+1;
}
//目标:学会使用if分支结构解决问题,理解其流程
public class ifDemo1 {
public static void main(String[] args) {
//格式1
//需求:心跳(60~100)之间是正常,否则系统提示进一步检查
int beat =89;
if(beat<60||beat>100){
System.out.println("你的心跳数据是"+beat+",您可能需要进一步检查。");
}
System.out.println("您很正常,检查结束。");//输出 您很正常,检查结束
//格式2
//需求:发红包
double money =5678;
if(money>=1000) {
System.out.println("余额充足,可以发红包。");
} else{
System.out.println("自供自足吧!"); //输出:余额充足,可以发红包。
}
//格式3
//需求:绩效成绩 S 90~100 A 80~90 B 70~80 C70以下
int score=90;
if(score>=90&&score<=100){
System.out.println("你的绩效是:S");
}else if (score>=80&&score<90){
System.out.println("你的绩效是:A");
}else if (score>=70&&score<80){
System.out.println("你的绩效是:B");
}else{
System.out.println("你的绩效是: C"); //输出:你的绩效是:S
}
}
}
- switch分支
switch分支也是匹配条件去执行分支,适合做值匹配的分支选择,结构清晰
switch分支的格式
switch(表达式){
case 值1:
执行代码...;
break;
case 值n+1:
执行代码...;
break;
default:
执行代码...;
}
执行流程:
①先执行表达式的值,拿着这个值去与case后的值进行匹配。
②匹配的哪个case的值为true就执行哪个case,遇到break就跳出switch分支。
③如果case后的值都不匹配则执行default代码
public class switchDemo2 {
public static void main(String[] args) {
String weekday ="周日";
switch(weekday){
case "周一":
System.out.println("看黑马视频");
break;
case "周二" :
System.out.println("写算法题");
break;
case "周三" :
System.out.println("写博客");
break;
case"周四" :
System.out.println("重复周一");
break;
case "周五" :
System.out.println("重复周二");
break;
case "周六" :
System.out.println("开会");
break;
case "周日" :
System.out.println("出去浪");
break;
default:
System.out.println("数据有误"); //输出: 出去浪
}
}
}
switch分支注意事项:
①表达式类型只能是byte; short; int; char jdk5开始使用枚举,jdk7开始使用String,不支持double float long
②case给出的值不允许重复,切只能是字面量,不能是变量
③不要忘记写break,否则会出现穿透现象
switch的穿透性
如果代码执行到没有写break的case块,执行后将之间进入下一个case块(而且不会进行任何匹配),直到遇到break才跳出分支,这就是switch的穿透性
格式:
switch(表达式){
case 值1 :
执行代码1;
case2:
执行代码2;
case3:
执行代码3;
...
case 值n:
执行代码n;
break;
default:
执行代码n+1;
}
案例:月份天数查看器
1,3,5,7,8,10,12月份是31天
2月份闰年是29天,非闰年是28天
4, 6, 9,11月份是30天
public class switchDemo3 {
public static void main(String[] args) {
int month = 3;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(month+"月有31天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(month+"月有30天");
break;
case 2:
System.out.println(month+"月闰年有29天,非闰年有28天");
break; //输出: 三月有31天
}
}
}
循环结构
for循环
控制一段代码,反复执行很多次
for(初始化语句;循环条件;迭代语句) {
循环体语句(反复执行的代码);
}
for(int i=0; i <3; i++) {
System.out.println("Hello World");
//输出:Hello World Hello World Hello World
}
案例一:求和
public class forDemo1 {
public static void main(String[] args) {
//需求:计算1~5的和
//定义一个整形变量用于雷佳数据求和
int sum=0;
for(int i=1;i<=5;i++){
sum+=i;
}
System.out.println("1~5的和是"+sum); //输出:1~5的和是15
}
}
案例二:求奇数和
需求:求1~10之间的奇数和,并把求和结果在控制台输出
public class forDemo2 {
public static void main(String[] args) {
//方法一:
int sum =0;
for(int i=1; i<=10;i++) {
if(i%2==1){
sum+=i;
}
}
System.out.println("1~10的奇数和为"+sum); //输出:1~10的奇数和为25
}
}
//方法二:
public class forDemo2 {
public static void main(String[] args) {
int sum =0;
for(int i=1; i<=10;i+=2) {
sum+=i;
}
System.out.println("1~10的奇数和为"+sum); //输出:1~10的奇数和为25
}
}
案例三:水花仙数
需求:在控制台输出所有的"水仙花数",水仙花数必须满足如下2个要求:
1.水仙花数是一个三位数
2.水仙花数的个位、十位、百位的数字立方和等于原数
3.求出水仙花的个数
public class forDemo {
public static void main(String[] args) {
int count=0; //再循环外定义一个变量用于记录水仙花数的个数
for (int i=100;i<=999;i++){
int a=i%10; //个位
int b=i/10%10; //十位
int c=i/100; //百位
if((a*a*a+b*b*b+c*c*c) ==i) {
System.out.println(i+"\t"); //输出:153 370 371 407
count++;
}
}
System.out.println("水仙花的个数为"+count); //水仙花数的个数为4
}
}
while循环
格式:
while (循环条件) {
循环体语句(被重复执行的代码);
迭代语句;
}
public class doDemo1 {
public static void main(String[] args) {
//目标:学会使用while循环,并理解其执行流程
int i=0;
while (i<3){
System.out.println("Hello,World");
i++;
}
}
}
什么时候用 for 循环,什么时候用 while 循环?
.功能上是完全一样的, for 能解决的 while 也能解决,反之亦然。
.使用规范是:知道循环几次:使用 for ;不知道循环几次建议使用: while
案例:珠穆朗玛峰
世界最高山峰是珠穆朗玛峰(8848.86米=8848860米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,折叠多少次,可以折成珠穆朗玛峰的高度。
思路:
这种不清楚要循环多少次的情况可以选择用 while 实现
public class whileDemo1 {
public static void main(String[] args) {
//定义山峰的高度,智障的厚度
double peakHeight =8848860;
double peakThickness =0.1;
//定义纸张折叠的次数
int count=0;
//定义一个while循环来控制纸张进行折叠
while(peakThickness<peakHeight){
//让纸张厚一倍
peakThickness*=2;
count++;
}
System.out.println("折叠的次数"+count);
System.out.println("纸张的最终厚度"+peakThickness);
//折叠的次数27
//纸张的最终厚度1.34217728E7
}
}
do-while循环
先执行再判断循环条件
格式:
初始化语句
do {
循环体语句;
迭代语句;
} while(循环条件);
do-while循环的特点:一定会先执行一次循环体
public class doDemo1 {
public static void main(String[] args) {
//目标:学会使用do-while循环,并理解其执行流程
int i=0;
do{
System.out.println("Hello,World");
i++;
}while (i<=3);
}
}
三种循环的区别
三种循环的区别
. for 循环和 while 循环(先判断后执行)
. do ... while (第一次先执行后判断)
for 和 while 的区别:
. for 循环和 while 循环的执行流程是一模一样的。
.如果已知循环次数建议使用 for 循环,如果不清楚要循环多少次建议使用 while 循环。
for 循环中,控制循环的变量只在循环中可以使用。 While 循环中,控制循环的变量在循环后还可以继续使用。