java基础——day03-1 流程控制语句
流程控制
概述
在一个程序的执行过程中,每条语句的执行顺序会直接影响结果。而且在很多时候我们都要通过控制语句的执行顺序,来实现我们要完成的功能。
顺序结构
概念:执行顺序根据编写的顺序,从上往下执行。
package day03; public class day03_1 { public static void main(String[] args) { //顺序结构 System.out.println("这是要执行的第一条语句"); System.out.println("这是要执行的第二条语句"); System.out.println("这是要执行的第三条语句"); } }
判语语句if
判断语句--if
第一种格式:if(表达式关系){语句体}
package day03; public class day03_2 { public static void main(String[] args) { int a = 10; int b = 20; int c = 10; if(a == b){ //因为a != b 不满足条件 所以该条语句不会再执行 System.out.println("a = b"); } if(a == c){ //因为a =c 满足条件,所以控制台会输出a =c System.out.println("a = c"); } System.out.println("结束"); } }
执行流程:

判断语句--if...else
第二种格式:if(关系表达式){语句体1}else{语句体2}
package day03; public class day03_2 { public static void main(String[] args) { int a = 10; //通过对a进行取余 判断a是奇数还是偶数 if(a %2 ==0){ //因为 a / 2余数为0 所以 a 是偶数 System.out.println("a 是偶数"); }else { //上面条件成立 该条语句不再执行 System.out.println("a 是奇数"); } System.out.println("结束"); } }
执行流程:

判断语句--if...else if ...else
第二种格式:if(关系表达式1){语句体1} else if(关系表达式2){语句体2} else{语句体3}
package day03; public class day03_3 { public static void main(String[] args) { int a = 10; int b = 20; int c = 30; if(a >b){ System.out.println("a > b"); }else if(a > c){ System.out.println("a > c"); }else{ System.out.println("a < b and a < c"); } } }
执行流程:

if语句小练习:
package day03; import java.util.Scanner; public class day03_4 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入查询的成绩:"); int CJ = sc.nextInt(); System.out.println(Score(CJ)); } public static String Score(int score){ if(score > 79){ if(score >= 80 && score <= 89){ return "好"; }else { return "优秀"; } }else if(score < 70){ if(score >= 60 && score <= 69){ return "及格"; }else { return "不及格"; } }else { return "良"; } } }
package day03; //三元运算符与if语句互换使用 public class day03_5 { public static void main(String[] args) { int a = 10; int b = 20; //定义变量 存储a,b的较大值 int c; //if语句实现 if(a > b){ c = a; }else { c = b; } System.out.println(c); //三元运算符 c = a>b?a:b; System.out.println(c); //其返回值与if语句一致 都20 } }
选择语句--switch
格式:

执行流程:

小练习:
package day03; import java.util.Scanner; public class day03_6 { //定义变量,判断是周几 public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入1-7进行判断:"); int weekday = sc.nextInt(); if(weekday >7 || weekday <1){ System.out.println("您的输入有误!"); }else { switch (weekday){ case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; default: System.out.println("星期天"); } } } }
注意:
在switch语句中,如果case的后面不写break,将不再判断下一个case的值,而是直接向后运行,直到遇到break或者整体的switch结束。
package day03.day0; public class _7 { public static void main(String[] args) { int weekday = 1; switch (weekday){ case 1: System.out.println("星期一"); //符合条件 且无break 代码会继续执行 case 2: System.out.println("星期二"); //不符合条件 且无break 代码会继续执行 case 3: System.out.println("星期三"); break; //存在break 代码至此结束 case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; default: System.out.println("星期天"); } } }
由于case存在穿透性,因此在编写switc语句时,必须在每个case事件中加break;
循环语句
定义:循环语句在满足循环条件的情况下,反复执行某段代码,这段重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候,把循环判断的条件改为false,从而终止循环,否则会形成死循环。
循环语句--for
格式:
for(初始化表达式①; 布尔表达式②; 步进表达式④){
循环体③
}
例如:
package day03; public class day03_8 { //for循环语句 public static void main(String[] args) { // 初始化表达式 ;布尔表达式;步进表达式 for (int i = 0; i < 5; i++) { //循环体 System.out.println("hello word "+i); } } }
执行流程:

循环练习:
package day03; public class day03_9 { //计算1-100间的偶数和 public static void main(String[] args) { //定义接收累加和 int sum = 0; //获取1-100间的数字 for (int i = 1; i <= 100; i++) { //判断是否为偶数 if(i % 2 ==0){ //计算偶数累加和 sum += i; } } //打印累加结果 System.out.println("sum= "+sum); } }
package day03; //打印三角形 public class day03_10 { public static void main(String[] args) { for(int i=1;i<=5;i++){ for(int j=5; i<=j; j--) System.out.print(" "); for(int j=1; j<=i; j++) System.out.print("*"); for(int j=1; j<i; j++) System.out.print("*"); System.out.println(); } } }
package day03; public class day03_11 { public static void main(String[] args) { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { System.out.print(j+"*"+i +"="+i*j+" "); } System.out.println(); } } }
循环语句--while
说明:while语句在执行的时候,会先判断条件,若条件成立则执行循环体内的语句
格式:
初始化表达式①
while(布尔表达式②){
循环体③
步进表达式④
}
举例:
package day03; public class day03_12 { //利用while语句打印10次hello world public static void main(String[] args) { int i = 1; while (i <=5){ System.out.println("hello world!" + i); i+=1; } } }
执行流程:


小练习:
package day03; public class day03_13 { //利用while计算1-100之间的和 public static void main(String[] args) { int i = 1; int sum = 0; while (i <= 100){ sum+=i; i+=1; } System.out.println(sum); } }
循环语句--do...while
说明:do...while语句,在运行时,会先执行一次循环体内的语句,然后再判断条件
格式:
初始化表达式①
do{
循环体③
步进表达式④
}while(布尔表达式②);
例如:
package day03; public class day03_14 { //do...while语句 public static void main(String[] args) { //定义变量 int i =1; //do 先执行循环体内语句 再进行条件判断 do{ System.out.println("hello world" + i); i+=1; }while (i<=5); } }
package day03; public class day03_15 { public static void main(String[] args) { do{ System.out.println("你看我会不会执行"); }while (false); //循环体内的语句一定会先执行一遍 } }
执行流程:


for与while的区别:
1.控制条件语句所控制的那个变量,在for循环结束后,就不能访问到,而while循环结束后还可以继续使用,所以如果想继续使用,就用while,否则用for。原因是for循环结束,该变量就从内存中消失,提高内存使用效率。(未能证实...)
package day03; public class day03_16 { public static void main(String[] args) { int i = 0; for (i=0; i < 3; i++) { System.out.println("for "+i); } System.out.println(i); int j = 0; while (j<3){ System.out.println("while "+j); j+=1; } System.out.println(j); } }
2.已知循环次数推荐用for,未知循环次数推荐用while
跳出语句--break
使用场景:终止switch或者循环
1.在选择结构switch语句中
package day03; public class day03_17 { //break在switch语句中 public static void main(String[] args) { int i =2; switch (i){ case 1: System.out.println("程序运行到事件1啦"); break; case 2: System.out.println("程序运行到事件2啦"); break; case 3: System.out.println("事件运行到事件3啦"); break; default: System.out.println("没有找到对应答案"); } } }
2、在循环语句中
package day03; public class day03_18 { public static void main(String[] args) { //break在for循环中的应用 for (int i = 0; i < 5; i++) { if(i == 3){ break; } System.out.println("i= "+i); //i = 2 因为当i=3的时候 通过break跳出循环 } int num = 1; while (num<=5){ num+=1; if(num == 3){ break; } System.out.println("num = "+num); //num = 2 与上述同理 } } }
跳出语句--continue
使用场景:结束本次循环,继续下一次循环
package day03; public class day03_19 { public static void main(String[] args) { for (int i = 0; i < 5; i++) { if(i == 3){ continue; } //循环会执行5次 但是当i=3时 会结束本轮循环 也就是i=3不会被打印输出 System.out.println("i = "+i); } } }
拓展
死循环:指的是循环条件永远为true,死循环是永不结束的循环,例如:while(true){}
嵌套循环:指一个循环的循环体是另一个循环。比如for循环里还有一个for循环。
格式:
for(初始化表达式①; 循环条件②; 步进表达式⑦) {
for(初始化表达式③; 循环条件④; 步进表达式⑥) {
执行语句⑤;
}
}
执行流程:

例如:
package day03; import java.util.Scanner; public class day03_20 { //打印5*5的矩形 public static void main(String[] args) { for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { System.out.print("* "); } System.out.println(); } } }

浙公网安备 33010602011771号