• Java笔记13—控制语句(分支、循环、转向)


    目录

    控制语句:

    一、选择语句:if语句 

    二、选择语句:switch语句

    三、循环语句:for循环

    四、循环语句:while循环

    五、循环语句:do while循环

    六、转向语句:break

    七、转向语句:continue


    控制语句:

    • 选择语句(分支语句):if语句、switch语句
    • 循环语句:for循环、while循环、do..while..循环
    • 转向语句:break、continue、return

    一、选择语句:if语句 

    对于if语句来说,在任何情况下只能有1个分支执行,不可能存在2个或者更多个分支执行。if语句中只要有1个分支执行了,整个if语句就结束了。

    第一种:

    1. if(布尔表达式){
    2. java语句;
    3. java语句;
    4. }

    第二种: 

    1. if(布尔表达式){ // 分支1
    2. java语句;
    3. }else{ // 分支2
    4. java语句;
    5. }

    第三种: 

    1. if(布尔表达式1){ // 分支1
    2. java语句;
    3. }else if(布尔表达式2){ // 分支2
    4. java语句;
    5. }else if(布尔表达式3){
    6. java语句;
    7. }else if(布尔表达式4){
    8. java语句;
    9. }

    第四种: 

    1. if(布尔表达式1){ // 分支1
    2. java语句;
    3. }else if(布尔表达式2){ // 分支2
    4. java语句;
    5. }else if(布尔表达式3){
    6. java语句;
    7. }else if(布尔表达式4){
    8. java语句;
    9. }else{
    10. java语句; // 以上条件没有一个成立的。这个else就执行了。
    11. }

    案例1:判断性别

    1. public class IfTest01{
    2. public static void main(String[] args){
    3. boolean sex = false;// 定义一个布尔类型的变量,表示性别
    4. if(sex){
    5. System.out.println("男");
    6. }else{
    7. System.out.println("女");
    8. }
    9. // 可以使用三目运算符
    10. sex = true;
    11. System.out.println(sex ? "男" : "女");
    12. }
    13. }

    案例2:判断年龄

    1、从键盘上接收一个人的年龄。
    2、年龄要求为[0-150],其它值表示非法,需要提示非法信息。
    3、根据人的年龄来动态的判断这个人属于生命的哪个阶段?
    [0-5] 婴幼儿
    [6-10] 少儿
    [11-18] 少年
    [19-35] 青年
    [36-55] 中年
    [56-150] 老年

    1. public class ifTest{
    2. public static void main(String[] args){
    3. java.util.Scanner s = new java.util.Scanner(System.in);
    4. System.out.print("请输入年龄:");
    5. int age = s.nextInt();
    6. String str = "老年"; // 字符串变量默认值是“老年”
    7. if(age < 0 || age > 150){
    8. System.out.println("对不起,年龄值不合法");
    9. return;
    10. } else if(age <= 5){
    11. str = "婴幼儿";
    12. } else if(age <= 10){
    13. str = "少儿";
    14. } else if(age <= 18){
    15. str = "少年";
    16. } else if(age <= 35){
    17. str = "青年";
    18. } else if(age <= 55){
    19. str = "中年";
    20. }
    21. System.out.println(str);
    22. }
    23. }

    案例3:根据成绩判断等级

    1、系统接收一个学生的考试成绩,根据考试成绩输出成绩的等级。

    2、等级:
    优:[90~100]
    良:[80~90) 
    中:[70-80)
    及格:[60~70)
    不及格:[0-60)

    3、要求成绩是一个合法的数字,成绩必须在[0-100]之间,成绩可能带有小数。

    1. public class ifGradeTest{
    2. public static void main(String[] args){
    3. java.util.Scanner s = new java.util.Scanner(System.in);
    4. System.out.print("请输入您的考试成绩:");
    5. double score = s.nextDouble();
    6. System.out.println("您的考试成绩是:"+score);
    7. String grade = "不及格";
    8. if(score<0 || score>100){
    9. System.out.print("输入错误");
    10. return;
    11. }else if(score>90){
    12. grade = "成绩等级为优";
    13. }else if(score>80){
    14. grade = "成绩等级为良";
    15. }else if(score>70){
    16. grade = "成绩等级为中";
    17. }else if(score>60){
    18. grade = "成绩等级为及格";
    19. }
    20. System.out.print(grade);
    21. }
    22. }

    案例4:if嵌套

    1、从键盘上接收天气的信息:
    1表示:雨天
    0表示:晴天
    2、同时从键盘上接收性别的信息:
    1表示:男
    0表示:女
    3、要求:
    ①当天气是雨天的时候:
    男的:打一把大黑伞
    女的:打一把小花伞
    ②当天气是晴天的时候:
    男的:直接走起,出去玩耍
    女的:擦点防晒霜,出去玩耍

    1. public class ifExampleTest{
    2. public static void main(String[] args){
    3. java.util.Scanner s = new java.util.Scanner(System.in);// 接收用户键盘输入
    4. System.out.print("请输入您的性别,输入1表示男,输入0表示女:");
    5. int gender = s.nextInt();
    6. System.out.print("请输入当前的天气,1表示雨天,0表示晴天:");
    7. int weather = s.nextInt();
    8. if(weather == 1){
    9. System.out.print("雨天,");
    10. if(gender == 1){
    11. System.out.println("男:打一把大黑伞");
    12. }else if(gender == 0){
    13. System.out.println("女:打一把小花伞");
    14. }
    15. }else if(weather == 0){
    16. System.out.print("晴天,");
    17. if(gender == 1){
    18. System.out.println("男:直接走起,出去玩耍");
    19. }else if(gender == 0){
    20. System.out.println("女:擦点防晒霜,出去玩耍");
    21. }
    22. }
    23. }
    24. }

    二、选择语句:switch语句

    switch语句也是选择语句,也可以叫做分支语句。

    语法格式:break;语句不是必须的,default分支也不是必须的。

    1. switch(值){
    2. case1:
    3. java语句;
    4. java语句;...
    5. break;
    6. case2:
    7. java语句;
    8. java语句;...
    9. break;
    10. case3:
    11. java语句;
    12. java语句;...
    13. break;
    14. default:
    15. java语句;
    16. }

    switch语句支持的值:

    • 只支持int、String两种类型
    • 但是byte,short,char也可以使用在switch语句当中,因为byte short char可以进行自动类型转换
    • long类型不可以
    1. long x = 100L;
    2. switch(x){// 错误: 不兼容的类型: 从long转换到int可能会有损失
    3. }
    4. long x = 100L;
    5. switch((int)x){//可以
    6. }
    1. byte b = 100;
    2. switch(b){//可以,小转大byte自动转换成int
    3. }
    1. short s = 100;
    2. switch(s){//可以,小转大short自动转换成int
    3. }
    1. char c = 'a';
    2. switch(c){//switch支持字符串String类型
    3. }
    1. //switch也支持字符串String类型。
    2. switch("abc"){
    3. }

    例子1:接收键盘输入,根据输入的数字来判断星期几。0 星期日,1 星期一……

    1. public class SwitchTest01{
    2. public static void main(String[] args){
    3. java.util.Scanner s = new java.util.Scanner(System.in);
    4. System.out.print("请输入[0-6]的整数:");
    5. int num = s.nextInt();
    6. switch(num){
    7. case 0:
    8. System.out.println("星期日");
    9. break;
    10. case 1:
    11. System.out.println("星期一");
    12. break;
    13. case 2:
    14. System.out.println("星期二");
    15. break;
    16. case 3:
    17. System.out.println("星期三");
    18. break;
    19. case 4:
    20. System.out.println("星期四");
    21. break;
    22. case 5:
    23. System.out.println("星期五");
    24. break;
    25. case 6:
    26. System.out.println("星期六");
    27. }
    28. }

    例子2:根据成绩判断等级

    1、系统接收一个学生的考试成绩,根据考试成绩输出成绩的等级。

    2、等级:
    优:[90~100]
    良:[80~90) 
    中:[70-80)
    及格:[60~70)
    不及格:[0-60)

    3、要求成绩是一个合法的数字,成绩必须在[0-100]之间,成绩可能带有小数。

    1. public class SwitchTest02{
    2. public static void main(String[] args){
    3. // 提示用户输入学生成绩
    4. java.util.Scanner s = new java.util.Scanner(System.in);
    5. System.out.print("请输入学生成绩:");
    6. double score = s.nextDouble();
    7. System.out.println(score);
    8. if(score < 0 || score > 100){
    9. System.out.println("您输入的学生成绩不合法,再见!");
    10. return; // 这个代码的执行,会让main结束。
    11. }
    12. int grade = (int)(score / 10); // 95.5/10结果9.55,强转为int结果是9
    13. String str = "不及格";
    14. switch(grade){
    15. case 10: case 9:
    16. str = "优";
    17. break;
    18. case 8:
    19. str = "良";
    20. break;
    21. case 7:
    22. str = "中";
    23. break;
    24. case 6:
    25. str = "及格";
    26. }
    27. System.out.println("该学生的成绩等级为:" + str);
    28. }
    29. }

    三、循环语句:for循环

    为什么要使用循环:循环语句的出现就是为了解决代码的复用性。同的代码重复出现的时候,可以使用循环语句。

    语法:

    1. for(初始化表达式; 条件表达式; 更新表达式){
    2. 循环体; // 循环体由java语句构成
    3. java语句;
    4. java语句;
    5. java语句;
    6. java语句;
    7. ....
    8. }

     初始化表达式、条件表达式、更新表达式 其实都不是必须的。

    1. for(;;){
    2. System.out.println("死循环");
    3. }
    1. public class ForTest02{
    2. public static void main(String[] args){
    3. for(int i = 0;i < 10;i++){
    4. System.out.println("i = " + i); // 0 1 2 3....9
    5. }
    6. //System.out.println(i);//错误: 找不到符号
    7. // i变量的作用域就扩大了。
    8. int i = 0;
    9. for(;i < 10;i++){
    10. System.out.println("i =" + i); // 0 1 2 3....9
    11. }
    12. System.out.println("循环结束后i = " + i); // 10
    13. for(int k = 1; k <= 10; k++){
    14. System.out.println("k = " + k); // 1 2 ..... 9 10
    15. }
    16. for(int k = 1; k <= 10; ){
    17. System.out.println("k =" + k); // 1 2 ..... 9 10
    18. k++;
    19. }
    20. for(int k = 1; k <= 10; ){
    21. k++;
    22. System.out.println("k =" + k); // 2 3 4 5 6 7 8 9 10 11
    23. }
    24. }
    25. }

    案例1:使用for循环,实现1~100所有奇数求和

    1. public class ForTest04{
    2. public static void main(String[] args){
    3. sum = 0;
    4. for(int i = 1; i < 100; i += 2){
    5. sum += i;
    6. }
    7. System.out.println("1~100所有奇数求和结果是:" + sum);// 2500
    8. }
    9. }

    案例2:for循环的嵌套

    1. public class ForTest{
    2. public static void main(String[] args){
    3. for(int k = 0; k < 2; k++){
    4. System.out.println("k =" + k);
    5. for(int i = 0; i < 10; i++){
    6. System.out.println("外层循环k的值是" + k + ",内层循环i的值是" + i);
    7. }
    8. }
    9. }
    10. }

    案例3:九九乘法表

    1*1=1
    1*2=2 2*2=4
    ......
    1*9=9 2*9=18.............................9*9=81

    特点:共9行,第i行的时候有i列。

    1. public class ForTest06{
    2. public static void main(String[] args){
    3. for(int i = 1; i <= 9; i++){ // 9行,循环9次。
    4. for(int j = 1; j <= i; j++){ // i是行号
    5. System.out.print(j + "*" + i + "=" + i * j + " ");
    6. }
    7. System.out.println(); // 换行
    8. }
    9. }
    10. }

    四、循环语句:while循环

    语法:

    1. while(布尔表达式){
    2. 循环体;
    3. }

    判断布尔表达式的结果,如果为true就执行循环体,直到布尔表达式结果为false,结束。

    while循环的循环次数是:0~n次。

    1. // 死循环
    2. while(true){
    3. System.out.println("死循环");
    4. }
    1. public class WhileTest01{
    2. public static void main(String[] args){
    3. // for和while完全可以互换,只不过就是语法格式不一样。
    4. for(int i = 0; i < 10; ){
    5. i++;
    6. System.out.println("i --->" + i); // 1 2 3 .. 9 10
    7. }
    8. int i = 0;
    9. while(i < 10){
    10. i++;
    11. System.out.println("i = " + i); // 1 2 3 .. 9 10
    12. }
    13. }
    14. }

    、循环语句:do while循环

    语法:

    1. do {
    2. 循环体;
    3. }while(布尔表达式);

    注:do..while循环最后的时候别漏掉“分号”。

    对于do..while循环来说,循环体至少执行1次。循环体的执行次数是:1~n次。

    1. // 至少执行1次循环体。
    2. do{
    3. System.out.println("Hello World!");
    4. }while(false);
    1. public class DoWhileTest01{
    2. public static void main(String[] args){
    3. do{
    4. System.out.println(i++); // 0 1 2 3 ... 8 9
    5. }while(i < 10);
    6. }
    7. }

    六、转向语句:break

    break语句是一个单词成为一个完整的java语句,continue也是这样。

    break语句用在两个地方:

    • 第一个位置:switch语句当中,用来终止switch语句的执行。
    • 第二个位置:break;语句用在循环语句当中,用来终止循环的执行(for、while、do while)。

    break语句的执行并不会让整个方法结束,

    break语句主要是用来终止离它最近的那个循环

    1. for(int i = 0; i < 10; i++){
    2. if(i == 5){
    3. break; // break;终止的不是if,不是针对if的,而是针对离它最近的循环。
    4. }
    5. System.out.println("i = " + i); // 0 1 2 3 4
    6. }
    1. for(int k = 0; k < 2; k++){ // 外层for
    2. for(int i = 0; i < 10; i++){ // 内层for
    3. if(i == 5){
    4. break; // 这个break;语句只能终止离它最近的for
    5. }
    6. System.out.println("i = " + i); //0 1 2 3 4 0 1 2 3 4
    7. }
    8. }
    1. // 这种语法很少用,了解一下即可。
    2. a:for(int k = 0; k < 2; k++){
    3. b:for(int i = 0; i < 10; i++){
    4. if(i == 5){
    5. break a; // 终止指定的循环。
    6. }
    7. System.out.println("i = " + i); //0 1 2 3 4
    8. }
    9. }

    七、转向语句:continue

    continue语句的作用是:终止当前"本次"循环,直接进入下一次循环继续执行。 

    break和continue的区别:

    • break终止离它最近的一整个循环。
    • continue跳过循环中的某一次的执行,继续这个循环。
    1. public class ContinueTest01{
    2. public static void main(String[] args){
    3. for(int i = 0; i < 10; i++){
    4. if(i == 5){
    5. break;
    6. }
    7. System.out.println("i = " + i);//0 1 2 3 4
    8. }
    9. System.out.println("----------------------------");
    10. for(int i = 0; i < 10; i++){
    11. if(i == 5){
    12. continue;
    13. }
    14. System.out.println("i = " + i); // 0 1 2 3 4 6 7 8 9
    15. }
    16. }
    17. }

  • 相关阅读:
    【K8S系列】Kubernetes的网络模型
    轻量应用服务器和云服务器有哪些区别?该如何选择?
    AI+边缘计算,让城市治理难题“看得见”又“管得了”
    6.PHP函数、$GET和$POST变量
    STM32HAL库-IWDG篇
    图解LeetCode——1582. 二进制矩阵中的特殊位置(难度:简单)
    【前端知识】Three 学习日志(十一)—— 高光网格材质Phong
    javascript二维数组(9)toString的用法
    Spring动态修改bean属性的value
    应广单片机开发调试应注意的问题
  • 原文地址:https://blog.csdn.net/qq_45709187/article/details/126308374