流程控制
流程控制分为三种 :顺序结构,分支结构,循环结构
第一种: if(条件表达式){ 执行表达式 }第二种:二选一 if(条件表达式){ 执行表达式1 }else{ 执行表达式2 }第三种:n选一 if(条件表达式1){ 执行表达式1 }else if(条件表达式2){ 执行表达式2 }else if(条件表达式3){
执行表达式3
}...else{ 执行表达式n }
//第一种 int heartBeat=89; if(heartBeat<60||heartBeat>120){ System.out.println("需要进一步检查"); }; System.out.println("检查结束"); //第二种 int age =23; if(age<18){ System.out.println("你看一看动画片"); }else{ System.out.println("你可以看成人电影"); } //第三种: if(age<0){ System.out.println("非法"); }else if(age<18){ System.out.println("青少年"); }else if(age<35){ System.out.println("青壮年"); }else if(age<60){ System.out.println("青壮年"); }else if(age<120){ System.out.println("老年"); }else{ System.out.println("成仙"); }
练习
编写程序:由键盘输入三个整数分别存入变量num1,num2,num3 对他们进行排序(使用if-else if-else),并且从小到大输出
说明:1.if-else结构可以相互嵌套的2.如果if-else结构中的执行语句只有一行时,对应的一对{}可以省略的。但是,不建议大家省略
import java.util.Scanner; public class IfTest01{ public static void main(String [] args){ Scanner scan=new Scanner(System.in); System.out.println("请输入第一个数"); int num1=scan.nextInt(); System.out.println("请输入第二个数"); int num2=scan.nextInt(); System.out.println("请输入第三个数"); int num3=scan.nextInt(); if(num1>=num2){ if(num3>=num1){ System.out.println(num2+","+num1+","+num3); }else if(num2>num3){ System.out.println(num3+","+num2+","+num1); }else{ System.out.println(num2+","+num3+","+num1); } }else{//num1<num2 if(num3>=num2){ System.out.println(num1+","+num2+","+num3); }else if(num1>num3){ System.out.println(num3+","+num1+","+num2); }else{ System.out.println(num1+","+num3+","+num2); } } } }
流程语句之二:switch-case
1.结构: switch(表达式){ case 常量1: 执行语句1; //break; case 常量2: 执行语句1; //break; case 常量3: 执行语句1; //break; ... defaule: 执行语句; //break; }
2.说明: 1根据switch表达式中的值,一次匹配各个case中的常量,一旦匹配成功,则进入相应case结构中,调用其执行语句。当调用完执行的语句后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或者此switch-case结构末尾为止 2.break可以使用在switch-case中,一旦执行到此关键字,就跳出switch-case结构 3.switch结构中的表达式,只能使用以下六种之一 byte short int char String(JDK7) 枚举类型(JDK5) 4.case之后只能声明常量。不能声明范围。(age<18) 5.break关键字是可选的 6.default:相当于if-else结构中else default结构是可选的,而且位置是灵活的
int num =1; switch(num){ case 0: System.out.println("zero"); break; case 1: System.out.println("one"); break; case 2: System.out.println("tow"); break; default: System.out.println("orther"); break; }
说明1.当可以用switch-case的结构都可以用if-else,反之不成立2.当程序程序既可以用switch-case,也可以同if-else时,优先考虑switch-case(因为效率高)
for循环结构的使用
一.循环结构的四要素: 1.初始化条件 2.循环条件 ---->boolean类型 3.循环体 4.迭代条件二.for循环结构for(1;2;4){ 3}执行过程 1--2--3--4--2--3--4--2
for(int i=1;i<=5;i++){ System.out.println("Hello World!"); } //System.out.println(i); 编译错误 //结论:i的作用范围在for循环内(),出了for循环就无效了 int num=1; for(System.out.println("a");num<=3;System.out.println("c"),num++){ System.out.println("b"); } //结果:a b c b c b c //例题:遍历100以内的偶数,输出所有的偶数和,和偶数的个数 int sum=0; //记录所有的偶数和 int count=0;//记录偶数的总个数 for(int i=1;i<=100;i++){ if(i%2==0){ System.out.println(i); sum+=i; count++; } } System.out.println(sum);//2550 System.out.println(count);//50
while循环结构
一,循环结构的四个要素 1.初始条件 2.循环条件 -->boolean类型 3.循环体 4.迭代条件二,while循环的结构 1. while(2){ 3; 4; }
执行过程:1--2--3--4--2--3--4--2--3--4--2
说明:1.写while循环千万不要丢了迭代条件。一旦丢了就成了死循环2.我们写程序,要避免出现死循环3.for循环和while循环是可以相互转化的 区别:for循环和while循环的初始化条件的作用范围不同
算法:有限性
//遍历100以内的所有的偶数 int i=1; while(i<=100){ if(i%2==0){ System.out.println(i);// } i++; } System.out.println(i);//101
do-while循环结构
1.初始条件2.循环条件 -->boolean类型3.循环体4.迭代条件
1do{ 3; 4;}while(2);
执行过程:1--3--4--2--3--4--2--3--4-.....-2
说明:1.do--while循环至少会执行一次循环体2.在开发中,使用for和while更多一些。较少使用do-while
//遍历100以内的偶数,并计算所有偶数的和及所有偶数的个数 int i=1; int sum=0; int count=0; do{ if(i%2==0){ System.out.println(i); sum+=i; count++; } i++; }while(i<=100); System.out.println("所有的偶数的和:"+sum);//2550 System.out.println("所有的偶数的个数:"+count);//50
说明:1.不在循环条件限制次数的结构:for(;;)或while(true)2.结束循环有几种方式? 方式一:循环条件部分返回false 方式二:在循环体中,执行break
嵌套循环的使用
1.嵌套循环:将一个循环结构A声明在另一个循环结构B的循环体中,就构成了嵌套循环2.外层循环:循环结构B内层循环::循环结构A3.说明 1.内层循环结构循环一遍,相当于外层循环循环体执行一次 2.假设外层循环执行m次,内层循环执行n次。此时内层循环提一共执行了 m*n次
/*要求:输出效果: ****** ****** ****** ****** */ for(int i=1;i<=4;i++){ for(int j=1;j<=6;j++){ System.out.print("*"); } System.out.println(); }
质数的练习(优化和不优化的例子)
break和continue关键字的使用
使用范围 循环中使用的作用(不同点) 相同点
break switch-case 结束当前循环 关键字后面不能声明执行语句 循环结构中
continue 循环结构中 结束本次循环 关键字后面不能声明执行语句
for(int i=1;i<=10;i++){ if(i%4==0){ //break; //123 continue; //123567910 } System.out.println(i); }