首页 > 技术文章 > 流程控制---分支结构

gabraham 2021-03-13 15:00 原文

流程控制

流程控制三种结构:

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

  • 分支结构: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 {

/**
*
* @Desciption
* @author Abraham
* @email 1290807550@qq.com
* @version JDK1.8
* @date 2021年3月16日上午9:01:04
*/


  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 {

/**
*
* @Desciption
* @author Abraham
* @email 1290807550@qq.com
* @version JDK1.8
* @date 2021年3月16日上午9:01:04
*/


  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 {

/**
*
* @Desciption
* @author Abraham
* @email 1290807550@qq.com
* @version JDK1.8
* @date 2021年3月16日上午9:01:04
*/


  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+"天");

        }

  }
}

 

推荐阅读