分支结构(流程控制)if/ if-else /switch-case

本文详细介绍了Java中的分支结构,包括if-else的就近原则和switch-case的使用。强调了switch-case的适用场景和优势,如在满足一定条件时能提供更高的执行效率。此外,通过实例解析了switch-case的限制,如表达式类型限制及常量要求,并给出了多个编程题目以加深理解。

分支结构:

流程控制三种结构:

  • 顺序结构:程序从上往下执行。

  • 分支结构:if; if-else; if , else if, else if , else;

    switch-case

    说明:一般能用switch-case的地方,都能用if-else; 反之,则不成立;如果switch-case和if-else都能使用,并且案例不多的情况下优先使用switch-case , 因为switch-case的执行效率更高。
  • 循环结构: 在某些条件满足的情况下,反复执行特定的语句。 *** for; while; do-while***

      
        int temp2=30;
        if(temp2<60){
            System.out.println("温度合适,可以启动发动机");
        }
        System.out.println("检查结束");
        输出结果:温度合适,可以启动发动机
                检查结束
        int temp=100;
        if(temp<=80){
            System.out.println("温度适宜,可以启动机器");}
            else{
            System.out.println("温度过高,不适宜启动机器");
        }
        System.out.println("结束");
        输出结果:温度过高,不适宜启动机器
                结束
        int temp=40;
        if (temp<=10){
            System.out.println("温度过低");}

        else if(10<temp&&temp<=15){
            System.out.println("温度偏低");}
        else if(temp>15&&temp<=30){
            System.out.println("温度正常");}
        else if(temp>30&&temp<=50){
            System.out.println("温度过高,请立即降温");}
        else{
            System.out.println("有爆炸危险!!!");}
        输出结果:温度过高,请立即降温
编写程序:声明2个double变量并赋值。判断第一个数大于10.0且第二个数小于20.0,打印两数之和。否则打印两数之积
        double num4=11,num5=15;
        double num0=(num4>10&&num5<20)?(num4+num5):(num4*num5);
        System.out.println(num0);
用两种方法计算出三个数中的最大值:
        double d1 = 5, d2 = 6, d3 = 9, dmax;
        if (d1 > d2) {
            dmax = d1;
        } else {
            dmax = d2;
        }
        if (dmax > d3) {
            System.out.println("最大值=" + dmax);
        } else {
            System.out.println("最大值=" + d3);
        }
        =======================================================================
        double num1=5,num2=10,num3=20;
        double max=(num1>num2)?num1:num2;
        double max1=(max>num3)?max:num3;
        System.out.println("最大值="+max1);
        交换两个变量的值第一种方法:
        int num6=100,num7=200,num8;
        num8=num6;
        num6=num7;
        num7=num8;
        System.out.println("num6="+num6);
        System.out.println("num7="+num7);
        输出结果:num6=200
                num7=100
        ======================================================================
        交换两个变量的值第二种方法:
        int num9=500,num10=1000;
        num9=num9+num10;
        num10=num9-num10;
        num9=num9-num10;
        System.out.println("num9="+num9);
        System.out.println("num10="+num10);
        输出结果:num9=1000
                num10=500
        ======================================================================
        交换两个变量的值第三种方法:
        int num11=8,num12=20,num13;
        num13=num11^num12;
        num11=num13^num11;
        num12=num13^num11;
        System.out.println("num11="+num11);
        System.out.println("num12="+num12);
        输出结果:num11=20
                 num12=8

if-else的就近原则:

当没有括号的时候,else 优先选择最近的if;if选择最近的一条执行语句,如果跟有多条执行语句,在没有 {} 的前提下,if只能罩住最近的一行

在这里插入图片描述

switch-case 结构说明:

在这里插入图片描述

注意:switch中的表达式只能是如下六种类型之一:

byte, short, int, char, String, 枚举类型。

我们来看一个季节案例:

在这里插入图片描述

注意:switch和case后面的表达式必须是常量,禁止使用boolean。break可以选择加或者不加;default相当于if-else中的else.

题目:把随机输入的小写字母转换成大写字母

import java.util.Scanner;
public class switch01 {
    public static void main(String[] args) {
        System.out.println("请输入字母:");
        Scanner scan = new Scanner(System.in);
        String lett=scan.next();
        
       switch (lett) {
            case("a"):
                System.out.println("A");
                break;
            case ("b"):
                System.out.println("B");
                break;
            case ("c"):
                System.out.println("C");
                break;
            case ("d"):
                System.out.println("D");
                break;
            case("e"):
                System.out.println("E");
            default:
                System.out.println("Other");

        }
    }
}

注意:如果switch-case中,case的执行语句相同,则可以考虑case合并,如下图:

在这里插入图片描述

题目:从键盘上随意输入19年的月份和天数,算出它是一年中的第多少天?

方法一(冗余):

import java.util.Scanner;
public class switch02 {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入月份:");
        int month= scan.nextInt();
        System.out.println("请输入日子:");
        int days=scan.nextInt();
        switch (month){
            case(1):
                System.out.println(days);
                break;
            case(2):
                System.out.println((31+days));
                break;
            case(3):
                System.out.println((31+28+days));
                break;
            case(4):
                System.out.println((31+28+31+days));
                break;
            case(5):
                System.out.println((31+28+31+30+days));
                break;
            case(6):
                System.out.println((31+28+31+30+31+days));
                break;
            case(7):
                System.out.println((31+28+31+30+31+30+days));
                break;
            case(8):
                System.out.println((31+28+31+30+31+30+31+days));
                break;
            case(9):
                System.out.println((31+28+31+30+31+30+31+31+days));
                break;
            case(10):
                System.out.println((31+28+31+30+31+30+31+31+30+days));
                break;
            case(11):
                System.out.println((31+28+31+30+31+30+31+31+30+31+days));
                break;
            case(12):
                System.out.println((31+28+31+30+31+30+31+31+30+31+30+days));
                break;
            default:

        }

    }
}

方法二:

import java.util.Scanner;
public class switch03 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入月份:");
        int month=scan.nextInt();
        System.out.println("请输入日子:");
        int days=scan.nextInt();
        int alldays=0;
        switch(month){
            case(12):
                alldays+=30;
            case(11):
                alldays+=31;
            case(10):
                alldays+=30;
            case(9):
                alldays+=31;
            case(8):
                alldays+=31;
            case(7):
                alldays+=30;
            case(6):
                alldays+=31;
            case(5):
                alldays+=30;
                case(4):
                    alldays+=31;
                    case(3):
                        alldays+=28;
            case(2):
                alldays+=31;
            case(1):
                alldays+=days;
                System.out.println(alldays);

        }
    }
}

题目:从键盘上随意输入年份,月份和天数,算出它是那一年中的第多少天?(注意:需要先判断是不是闰年:可以被4整除,但是不能被一百整除,可以被400整除)

import java.util.Scanner;
public class switch04 {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入年份:");
        int year=scan.nextInt();
        System.out.println("请输入月份:");
        int month=scan.nextInt();
        System.out.println("请输入日期:");
        int day=scan.nextInt();
        int alldays=0;
          switch(month){
              case(12):
                  alldays+=30;
              case(11):
                  alldays+=31;
              case(10):
                  alldays+=30;
              case(9):
                  alldays+=31;
              case(8):
                  alldays+=31;
              case(7):
                  alldays+=30;
              case(6):
                  alldays+=31;
                  case(5):
                      alldays+=30;
                  case(4):
                      alldays+=31;
              case(3):
                  if(year%4==0&&year%100!=0||year%400==0){
                      alldays+=29; }
                  else {alldays+=28;}
              case(2):
                  alldays+=31;
              case(1):
                  alldays+=day;

                  System.out.println(year+"年的第"+month+"月"+day+"天为该年的第"+alldays+"天");

          }

    }
}


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值