流程控制
顺序结构
什么是流程控制
- 任何程序都是由顺序、分支、和循环组成的。
- **顺序结构:**按照顺序依次执行
- **分支结构:**当满足条件时执行A不满足条件执行B
- **循环结构:**一直执行到不满足条件为止
分支结构
单分支
当条件为true执行否则不执行
int a1 = 1;
int a2 = 1;
int a3 = 2;
if(a1==a2){//结果:true
System.out.println("a1和a2相等");//输出a1和a2相等
}
if(a1==a3)//结果:false
{
System.out.println("a1和a3相等");//不执行
}
多分支
-
if-else
int a1 = 1; int a2 = 2; if(a1 == a2) {//true System.out.println("a1和a2相等"); }else{ System.out.println("a2和a2不相等");//执行 }
if - else 嵌套
int a1 = 1; int a2 = 2; int a3 = 3; if(a1 == a2) {//false System.out.println("a1和a2相等"); }else if (a2 == a3){//true System.out.println("a2和a3相等");//执行 }else System.out.println("a2和a3不相等");
**总:**从上往下依次判断,条件为true执行if,条件为false执行else
-
switch case语句(重点)
int a = 2; switch(a){ case 1: System.out.println("匹配1"); break; case 2: System.out.println("匹配2"); //没有break 匹配了会继续向下执行直到遇见break或执行到最后 才结束switch语句 case 3: System.out.println("匹配3"); break; default: System.out.println("都不匹配执行"); break;
当传入整型常量时,执行对应整型常量的case, 如果没有对应的执行default,且每一个case通道都必须要和break关键字配合使用,如果不加break会执行下一个case直到遇见break或者执行到switch语句最后。
注:
case后面必须跟整型常量。
switch(整数表达式)中整数表达式的类型只能为:
byte、int、short
char
String表达式(1.7更新后)
循环结构
重点:循条件、循环体
//1、计算0-100的和
int i = 0;
int sum = 0;
while(i <= 100){//一直执行控制的语句,直到条件为假为止
sum += i;
i++;
}
System.out.println("0-100的和为:" + sum);//5050
// //无限循环
// while(true){
// //循环体
// }
/**
* break 跳出当前循环
* continue 结束本次循环
*/
i = 0;
sum = 0;
while(i<100){
i++;
if(i == 40){
continue;//结束本次循环 没有0-50的和没有+40
}
sum += i;
if(i == 50){
break;//i==50时循环跳出
}
}
System.out.println("0-50的算40和为:" + sum);//1235
}
实例:
/**
* 1、计算100以内个位数为3的和
*/
int i = 0;
int sum = 0;
while(i < 100){
if(i % 3 == 0){//个位数等于3
sum += i;
}
i++;
}
System.out.println("100以内个位数为3的和为:" + sum);//1683
}
/**
* 2、计算100以内偶数的和
*/
int i = 0;
int sum = 0;
while (i < 100) {
i++;
if(i % 2 != 0){//不为偶数结束本次循环
continue;
}
sum += i;
}
System.out.println("100以内偶数的和为:" + sum);//2550
/**
* 3、计算10!
*/
int i = 1;
long sum = 1;//乘积赋初值为1,和赋初值为0;
while(true){
sum *= i;
i++;
if(i > 10){
break;//大于10结束循环
}
}
System.out.println("10!为:" + sum);//3628800
-
do-while()
/** * do-while * 1、至少执行一次 * 先执行了在判断循环条件 * 2、注意格式: * do{ * 循环体; * }while(循环条件); //while后面有";" */ String passwd = "123456"; do{ System.out.println("在次输入密码:"); }while(passwd != "123456");//注意:条件和while有区别 System.out.println("登录成功");
-
for()
/** * 1、for三要素:循环控制变量、循环条件、循环控制变量改变 * * 2、for(循环控制变量1;循环条件2;循环控制变量改变4){循环体3;} * 循环控制变量:一个循环且执行一次 int i = 0; * 循环条件:i <= 100; * 循环体:sum += i; * 循环控制变量改变:i++ * 从1-4依次执行,1整个循环只执行一次 * * 3、自造死循环 * for(;;){;} * * 4、 * int i = 0; * int sum = 0; * for(;i <= 100;){ while(i <= 100){ * sum + = i; 相等 sum += i; * i++; <==> i++; * } } */ //计算0-100的和 ,观察和while的区别,及演变过程 int sum = 0; for(int i = 0;i <= 100;i++){ sum += i; } System.out.println("0-100的和为:" + sum);
-
for循环的嵌套实例:
/** * 99乘法表: *内循环的基数代表了行, *外循环变量的基数代表了列 * * 外循环执行一次,内循环执行一完!//其实可以直接理解,反正需要一条语句执行完了之后才能执行下一条语句 * 外层循环控制行数,内层循环控制列数 */ for (int i = 1; i <= 9; i++) {//外层循环控制行数 for (int j = 1; j <= i; j++) {//内层循环控制列数 System.out.print(j + "*" + i + "=" + i * j + " "); } System.out.println(); } /*结果 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 */
增强for()
这个涉及到和数组和集合的组合使用就后面遇见了在总结。
-
总:
“”当”型循环采用while
“直到”型循环采用do-while
“固定次数循环”采用for循环主要考虑的三个部分:
循环变量的初始值
循环条件
循环变量的改变