选择结构switch;循环结构while,do…while,for;跳转语句break,continue,return


e. 选择结构switch

语法

switch(表达式){
    case 常量1:
        语句块1;
        break;
    case 常量2:
        语句块2:
        break;
        ...
    case 常量n;
        语句块n;
        break;
    default:
        default语句块;
        break;
}

表达式对应一个值;表达式的返回值必须是:(byte,short,int,char,String)

case 常量1:当表达式的值等于常量1,就执行 语句块1;

break 表示退出 switch

如果和 case常量1匹配,就执行语句块1,如果没有匹配,就继续匹配 case 常量2

如果一个都没有匹配上,则执行default。

流程图

image

注意问题

  1. case 和 default 可以放在任意位置,不影响结果
  2. break 用来跳出switch 语句,继续执行后续代码
  3. 如果没有写 break ,程序会顺序执行到switch结尾,除非遇到 break

案例

int i = 2;
        switch(i){
            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 0:
                System.out.println("人工服务");
                break;
            default:
                System.out.println("输入错误");
                break;
        }

* 练习

练习1

Scanner输入年份判断是否为闰年。

import java.util.Scanner;

public class Practice02 {
    public static void main(String[] args) {
        //输入年份判断是否为闰年
        //创建变量接收用户输入年份
        Scanner input = new Scanner(System.in);
        System.out.println("输入需要查询的年份:");
        int num = input.nextInt();
        //判断是否为闰年
        if(num % 4 == 0 && num % 100 != 0 || num % 400 ==0){
            System.out.println(num + "年是闰年");
        }else {
            System.out.println(num + "年不是闰年");
        }
    }
}

练习2

输入今天星期几,如果是周六就输入温度,温度高于等于30度去游泳,温度高于等于20度低于30度就去跑步,温度低于20度在家写代码;如果不是周六,好好工作。

import java.util.Scanner;

public class Practice03 {
    //编写一个main方法
    public static void main(String[] args) {
        //创建一个变量接收输入星期几
        Scanner input = new Scanner(System.in);
        System.out.println("请输入今天星期几(1~7)");
        int num = input.nextInt();
        //判断是否周六
        if(num == 6){
            //接收输入温度
            System.out.println("请输入今日温度");
            int tem = input.nextInt();
            //判断温度在哪个区间
            if(tem >=30){
                System.out.println("周六太热了去游泳吧!!");
            }else if(tem >= 20){
                System.out.println("周六温度在20~30之间去跑步吧!!");
            }else {
                System.out.println("周六温度在20度以下在家写代码!!");
            }
        }else {
            System.out.println("不是周六,好好工作!!");
        }
    }
}

练习3

输入月份,输出对应的天数。

import java.util.Scanner;

public class Practice04 {
    public static void main(String[] args) {
        //根据用户输入的月份,输出当月对应的天数
        //思路:Scanner 输入月份
        //1,3,5,7,8,10,12月有31天
        //4,6,8,11月有30天
        //2月需要判断年份是否闰年,若是闰年则2月有29天,平年则2月有28天
        //月份错误
        //创建一个变量接收月份
        Scanner input = new Scanner(System.in);
        System.out.println("请输入月份(1~12):");
        int month = input.nextInt();
        //判断月份,对应天数
        /*if (month >= 1 && month <= 12){
            if (month == 1 || month == 3 || month == 5 || month == 7
                || month == 8|| month == 10 || month == 12){
                System.out.println(month + "月有31天");
            } else if (month == 2) {
                //2月需要判断是否闰年
                System.out.println("请输入年份:");
                int year = input.nextInt();
                if (year % 4 == 0 && year % 100 != 0 || year % 400 ==0) {
                    System.out.println(year + "月有28天");
                } else {
                    System.out.println(year + "月有29天");
                }
            }else {
                System.out.println(month + "月有30天");
            }
        }else {
            System.out.println("输入的月份不存在");
        }*/
        switch(month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println(month + "月有31天");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println(month + "月有30天");
                break; //这里的 break 一定要记得
            case 2:
                System.out.println("2月请输入年份");
                int year = input.nextInt();
                //判断是否闰年
                if(year % 4 == 0 && year % 100 != 0 || year % 400 ==0){
                    System.out.println(year + "年是闰年,2月有29天");
                }else {
                    System.out.println(year + "年是平年,2月有28天");
                }
                break;
            default :
                System.out.println("您输入的月份不存在");
                break;
        }
    }
}

4.3、循环结构

作用:用来解决重复性问题

循环结构四要素:循环变量初始化,循环条件,循环体,循环变量迭代

a) while 循环

反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。

语法

定义循环变量;
while(循环条件) {
    循环体;
    循环变量迭代;
}

先判断,再执行

流程图

image

案例

打印 1~100 之间的奇数

 int num = 1;
        while (num <= 100) {
            System.out.println(num);
            num+2;
        }

练习

老师检查作业是否合格,不合格安排学习任务,上午阅读教材,学习理论部分,下午上机编程,掌握代码部分

学习后继续检查,直到合格为止

import java.util.Scanner;

public class Pratice05 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("老师检查是否合格?yes/no:");
        String qualified = input.next();
        while (qualified.equals("no")) {
            System.out.println("不合格,上午阅读教材,学习理论部分,下午上机编程,掌握代码部分");
            System.out.println("老师检查是否合格?yes/no:");
            qualified = input.next();
        }

        System.out.println("恭喜合格啦!");
    }
}

输入一个整数,将其翻转输出。如输入123456,输出654321.

import java.util.Scanner;

public class Practice06 {

    public static void main(String[] args) {

        //输入一个整数,将其翻转输出
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int number = input.nextInt();
        int result = 0;
        while (number != 0) {
            result = result * 10 + number % 10;
            number /= 10;
        }
        System.out.println("翻转后变成:" + result);
    }
}

假设五个人参加考试,最后得出总分、最高分、最低分、平均分,要求成绩从控制台输入

import java.util.Scanner;

public class Practice07 {
    public static void main(String[] args) {

        //假设五个人参加考试,最后得出总分、最高分、最低分、平均分,要求成绩从控制台输入
        //思路:循环输入五人的成绩
        Scanner input = new Scanner(System.in);
        //定义好需要的变量
        int sum = 0,max = 0,min = 0,avg = 0;
        int num = 1;
        //循环输入成绩
        while (num <= 5) {
            System.out.println("输入第" + num + "个人的成绩:");
            int score = input.nextInt();
            //总分
            sum += score;
            //最高分,最低分
            if (num == 1) {
                max = score;
                min = score;
            }else {
                max = max > score ? max : score;
                min = min < score ? min : score;
            }
            num++;
        }
        //平均分
        avg = sum / 5;
        System.out.println("总分:" + sum + ",最高分:" + max + ",最低分:"  + min + ",平均分:" + avg);
    }
}

b) do…while 循环

执行条件,先执行一次循环体,再判断循环条件。

语法

循环变量初始化
do{
    循环体;
    循环变量迭代;
} while(循环条件);

流程图

image

案例

经过几天学习,老师给了张浩一道测试题,先让他上机编写程序完成,然后老师检查是否合格。如果不合格,则继续编写。

import java.util.Scanner;

public class DoWhile01 {

    public static void main(String[] args) {

        //经过几天学习,老师给了张浩一道测试题
        //先让他上机编写程序完成
        //然后老师检查是否合格。如果不合格,则继续编写。
        Scanner input = new Scanner(System.in);
        String quil;
        do {
            System.out.println("上机编写程序");
            System.out.println("老师批改是否合格(yes/no)");
            quil = input.next();
        } while(quil.equals("no"));
        System.out.println("恭喜合格");
    }
}

c) for 循环

语法

for(循环变量初始化;循环条件;循环变量迭代) {
    循环体;
}

流程图

image

案例

* 代码调试功能

DEBUG:找虫子,找到代码错误的位置

(一般在编译和运行都不报错,却找不到错误时使用)

步骤:

  1. 在你觉得可能有错误的地方打断点(代码左边显示行数处点击一下),一般打在代码开始的位置
  2. 点击绿色虫子图案的按钮,运行到断点的位置
  3. 点击F6,单步进入,运行每行代码,观察数据输出
  4. 观察程序运行情况,找到程序的BUG

image

4.4、跳转语句

1)、return

作用:return 使用在方法,表示跳出所在的方法

如果使用在 main 方法中,表示退出程序

案例

import java.util.Scanner;

public class Return01 {

    public static void main(String[] args) {
        //不满足条件时返回
        //输入用户名
        Scanner input = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String userName = input.next();
        //判断用户名
        if(!userName.equalsIgnoreCase("admin")){
            System.out.println("用户名错误");
            return;
        }
        //输入密码
        System.out.println("请输入密码:");
        String pwd = input.next();
        //判断密码
        if(!pwd.equalsIgnoreCase("88888888")){
            System.out.println("密码错误");
            return;
        }
        System.out.println("登录成功");

    }
}

拓展知识点

equalsIgnoreCase("字符串")比较两个字符串,忽略大小写

2)、break

当break出现在循环语句中,作用是跳出循环语句,执行后面的代码

案例

当变量x的值为3时,使用break语句跳出循环。

int x = 1;
while (x <= 4) {
    System.out.println("x = " + x);
    if (x == 3) {
        break; //跳出循环
    }
    x++;
}

打印结果只到了 x = 3;并没有出现”x = 4″

3)、continue

continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环

案例

求1~100的奇数和

//用continue跳过偶数
int sum = 0; // 定义变量sum,用于记住和
for (int i = 1; i <= 100; i++) {
    if (i % 2 == 0) { // i是一个偶数,不累加
        continue; // 结束本次循环
    }
    sum += i; // 实现sum和i的累加
}
System.out.println("sum = " + sum);

写代码要习惯注释

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/271794.html

(0)
上一篇 2022年7月7日
下一篇 2022年7月7日

相关推荐

发表回复

登录后才能评论