选择分支结构
概念
根据布尔值选择性的执行某个分支内容
if分支
语法
if(布尔表达式){ //逻辑代码 }
执行
int age=18; if(age<18){ System.out.println("你真帅"); }
if else分支
语法
if(布尔表达式){ //if中的逻辑代码 }else{ //else中的逻辑代码 }
运行
多重if else分支
语法
if(布尔表达式1){ //逻辑代码1 }else if(布尔表达式2){ //逻辑代码2 }else if(布尔表达式3){ //逻辑代码3 }else{ //else中的逻辑代码 }
运行
-
多重分支结构是一个整体,只会执行其中一个逻辑代码,比较顺序为从上至下
Scanner sc=new Scanner(System.in); System.out.println("请输入你的成绩:"); double score=sc.nextDouble(); if(score==100){ System.out.println("劳斯莱斯幻影"); }else if(score>=80 && score<=99){ System.out.println("布加迪"); }else if(score>=60 && score<=79){ System.out.println("大众"); }else if(score<60 && score>=0){ System.out.println("自行车"); }else{ System.out.println("成绩输入有误"); }
嵌套if分支
语法
if(外层布尔表达式){ if(内层布尔表达式){ //内层if中的逻辑代码 }else{ //内层else中的逻辑代码 } }else{ //外层else逻辑代码 }
-
在逻辑完整的前提下,对于嵌套层数没有要求
运行
Scanner sc=new Scanner(System.in); System.out.println("请输入你的成绩:"); double score=sc.nextDouble(); if(score==100){ System.out.println("劳斯莱斯幻影"); }else if(score>=80 && score<=99){ System.out.println("布加迪"); }else if(score>=60 && score<=79){ System.out.println("大众"); }else if(score<60 && score>=0){ //嵌套分支判断 if(score>=50 && score<60){ System.out.println("五菱宏光"); }else{ System.out.println("自行车"); } }else{ System.out.println("成绩输入有误"); }
switch分支
概念
作用于值确定的情况下,用于对固定值进行分支选择
语法
switch(具体值变量/拥有具体值结果的表达式){ case 值1: //逻辑代码1 break; case 值2: //逻辑代码2 break; default: //逻辑代码 }
运行
使用
-
能够接受比较的数据类型:byte、short、char、int、String(JDK1.7)
-
switch分支能完成的操作多重if一定可以,但是反之则不一定
-
如果case之后没有break,会执行到接下来的内容
-
default约等于多重if中的else
-
case比较结果为布尔类型,如果有一个case结果为true,其余case不会再进行布尔判断
-
case值不能相同
//实现数字和汉字的对等输出 int n=4; switch(n){ case 1://if(n==1) System.out.println("一"); break; case 2: System.out.println("二"); break; case 3: System.out.println("三"); break; default: System.out.println("输入有误"); }
-
多个case可以共用一段逻辑代码
switch(n){ case 1: case 3: case 5://if(n==1 ||n==3 ||n==5) System.out.println("31天"); break; default: System.out.println("输入有误"); }
局部变量
概念
定义在函数/方法内部的变量
使用
-
作用范围:从定义那一行开始,到所直属的代码块{}结束
-
在同一作用范围内,变量名不能重名
循环结构
概念
在满足某个条件的前提下,重复执行某一个逻辑代码
while循环
语法
while(布尔表达式){ //循环体(操作语句) }
循环组成条件
循环开始值、循环条件、循环迭代语句(对循环开始值进行变化)、循环体(循环真正执行的操作语句)
int i=1;//循环开始值,定义在循环上方 while(i<=100){//循环条件 System.out.println("王震正在跑第"+i+"圈"); //操作语句 i++;//i+=1; 迭代语句,写在操作语句下方 }
循环流程
开始值->循环条件->为true->执行操作语句->迭代语句->循环条件->直到为false->结束循环
-
开始值只会执行一次
while的执行特点
先判断,再执行(只有当满足循环条件时,才会执行操作语句)
do-while循环
do-while的执行特点
先执行,再判断(无论如何,都会先执行一次操作语句,根据操作语句执行结果决定是否继续循环)
语法
do{ //操作语句 }while(循环条件);
Scanner sc=new Scanner(System.in); int num;//用来接收评分值 int i=1;//接收圈数 do{ System.out.println("王震正在跑第"+i+"圈"); //操作语句 System.out.println("请对本次跑步进行评分:"); num=sc.nextInt(); i++; }while(num<=80);//循环条件
循环流程
操作语句->循环条件->为true->操作语句->循环条件->.直到为false->循环结束
for循环
语法
for(循环开始值;循环条件;循环迭代语句){ //操作语句 }
for(int i=1;i<=5;i++){ System.out.println("王震正在跑第"+i+"圈"); }
对比while
-
操作可以互等
-
while更适用于循环次数不确定的情况
-
for更适用于循环次数确定的情况
死循环
如果循环条件永远为true,则循环不会停止,就会导致死循环
使用
小括号中的组成三部分可以省略,但是必须通过;进行语法占位
for(;;){ //操作语句 }
流程控制
break
跳出当前所有循环,当前循环直接停止
for(int i=1;i<=10;i++){ if(i==5){ break; } System.out.println("王震正在跑第"+i+"圈");//1234 }
continue
跳出本次循环,直接进行下一次循环判断
for(int i=1;i<=10;i++){ if(i==5){ //break; continue; } System.out.println("王震正在跑第"+i+"圈");//1234678910 }
-
不能作用于switch,但是break可以
嵌套循环
概念
在一层循环当中再次定义循环,只要逻辑完整,嵌套层数没有要求,但是不建议超过两层
使用
-
外层循环代表行,内层循环代表列 (作用于图形输出)
-
外层循环执行一次,内层循环执行一遍
//输出一个由*组成的5行7列的长方形 for(int i=1;i<=5;i++){//外层:输出行 i=1 for(int j=1;j<=7;j++){//内层:输出列 System.out.print("*"); } System.out.println(); }
-
非图形输出的情况下,使用嵌套循环的关键就是寻找内层循环和外层循环的关联关系
-
break和continue只能操作自身所直属的循环