📜  Java中的决策制定(if,if-else,switch,break,continue,jump)

📅  最后修改于: 2020-02-12 15:22:56             🧑  作者: Mango

编程中的决策类似于现实生活中的决策。在编程中,我们还会遇到某些情况,即当满足某些条件时,我们希望执行特定的代码块。
编程语言使用控制语句根据某些条件来控制程序的执行流程。这些用于根据程序状态的更改使执行流程前进和分支。
Java的Selection语句:

    • if
    • if-else
    • 嵌套if
    • if – else if
    • switch
    • jump跳转:break,continue return

这些语句使您可以根据仅在运行时已知的条件来控制程序的执行流程。

  • if:if语句是最简单的决策语句。它用于决定是否执行某个语句或语句块,即如果某个条件为真,则执行语句块,否则不执行。
    语法
    if(condition)
    {
       // 条件为真执行
    }

    在此,评估后的条件为真或假。if语句接受布尔值:如果该值为true,则它将执行其下的语句块。
    如果我们没有在if(condition)之后提供大括号'{‘和’}’,默认情况下,if语句将认为只有一个语句放在其块内。例如,

    if(condition)
       statement1;
       statement2;
    // 这里是有statement1被执行

    流程图:

    示例:

    // Java代码,展示if条件语句
    class IfDemo
    {
        public static void main(String args[])
        {
            int i = 10;
            if (i > 15)
                System.out.println("10小于15");
            // 这句话将被执行
            System.out.println("if之外");
        }
    }

    输出:

    if之外
  • if-else:仅if语句告诉我们,如果条件为true,它将执行语句块,如果条件为false,则不会。但是如果条件为假,我们想做其他事情怎么办。这是else语句,当条件为false时,可以将else语句与if语句一起使用以执行代码块。

    语法
    if (condition)
    {
        // 条件为真,执行
    }
    else
    {
        // 条件为假,执行
    }

    例:

    // Java程序执行if-else条件语句
    class IfElseDemo
    {
        public static void main(String args[])
        {
            int i = 10;
            if (i < 15)
                System.out.println("i小于15");
            else
                System.out.println("i大于15");
        }
    }

    输出:

    i小于15
  • nested-if:嵌套的if作为另一个if or else的延伸的if语句。嵌套的if语句表示if语句内部的if语句(有点绕)。是的,Java允许我们在if语句内嵌套if语句。即,我们可以将if语句放在另一个if语句中。
    语法:
    if (condition1)
    {
       // 条件1为True执行
       if (condition2)
       {
          // 条件2为真执行
       }
    }


    例:

    // Java程序,展示嵌套if语句
    class NestedIfDemo
    {
        public static void main(String args[])
        {
            int i = 10;
            if (i == 10)
            {
                // 第一个if语句
                if (i < 15)
                    System.out.println("i小于15");
                // 嵌套if语句
                if (i < 12)
                    System.out.println("i也小于12");
                else
                    System.out.println("i大于15");
            }
        }
    }

    输出:

    i小于15
    i也小于12
  • if-else-if阶梯:在这里,用户可以在多个选项中进行选择。if语句从上至下执行,一旦控制if的条件之一为true,则与if关联的语句将被执行,并且梯形图的其余部分将被忽略。如果没有一个条件为真,则将执行最终的else语句。
    if (condition)
        statement;
    else if (condition)
        statement;
    .
    .
    else
        statement;


    例:

    // Java程序展示if-else-if阶梯
    class ifelseifDemo
    {
        public static void main(String args[])
        {
            int i = 20;
            if (i == 10)
                System.out.println("i = 10");
            else if (i == 15)
                System.out.println("i = 15");
            else if (i == 20)
                System.out.println("i = 20");
            else
                System.out.println("i不存在");
        }
    }

    输出:

    i = 20
  • switch-case switch语句是多路分支语句。它提供了一种简单的方法,可以根据表达式的值将执行分派到代码的不同部分。
    语法:
    switch (expression)
    {
      case value1:
        statement1;
        break;
      case value2:
        statement2;
        break;
      .
      .
      case valueN:
        statementN;
        break;
      default:
        statementDefault;
    }
    • 表达式的类型可以为byte,short,int char或枚举。从JDK7开始,表达式也可以是String类型。
    • 不允许重复的大小写值。
    • 默认语句是可选的。
    • break语句在switch内部用于终止语句序列。
    • break语句是可选的。如果省略,将继续执行下一种情况。


    例:

    // Java程序,展示switch-case用法
    class SwitchCaseDemo
    {
        public static void main(String args[])
        {
            int i = 9;
            switch (i)
            {
            case 0:
                System.out.println("i = 0.");
                break;
            case 1:
                System.out.println("i = 1.");
                break;
            case 2:
                System.out.println("i = 2.");
                break;
            default:
                System.out.println("i 大于 2.");
            }
        }
    }

    输出:

    i 大于 2.

     

  • 跳转Jump: Java支持三个跳转语句: break,continue return。这三个语句将控制权转移到程序的其他部分。
    1. Break:在Java中,break主要用于:
      • 终止switch语句中的序列(如上所述)。
      • 退出循环。
      • 用作goto的“文明”形式。

      使用break退出循环

      使用break,我们可以强制条件循环的立即终止,从而绕过条件表达式和循环体内的所有剩余代码。
      注意:Break在一组嵌套循环中使用时,只会从最内层循环中突破。
      例:

      编辑
      play_arrow
      bright_5
      // Java程序,展示使用break跳出循环
      class BreakLoopDemo
      {
          public static void main(String args[])
          {
              // 循环被设定在0-9运行
              for (int i = 0; i < 10; i++)
              {
                  // i = 5的时候结束循环
                  if (i == 5)
                      break;
                  System.out.println("i: " + i);
              }
              System.out.println("循环结束.");
          }
      }

      输出:

      i: 0
      i: 1
      i: 2
      i: 3
      i: 4
      循环结束.

      使用中断作为跳转的一种形式

      Java没有goto语句,因为它提供了一种以任意和非结构化方式进行分支的方法。Java使用标签,标签用于标识代码块。
      语法:

      label:
      {
        statement1;
        statement2;
        statement3;
        .
        .
      }

      现在,可以使用break语句跳出目标块。
      注意:您不能破坏未为封闭块定义的任何标签。
      语法:

      break label;

      例:

      // Java程序,展示break
      class BreakLabelDemo
      {
          public static void main(String args[])
          {
              boolean t = true;
              // label first
              first:
              {
                  // 这里的写法是非法的,因为label second没有被引入
                  second:
                  {
                      third:
                      {
                          // 在break之前
                          System.out.println("在 break 之前");
                          // break将会把程序带出second
                          if (t)
                              break second;
                          System.out.println("没有执行.");
                      }
                      System.out.println("没有执行.");
                  }
                  // 第一个块
                  System.out.println("这是在第二个块之后.");
              }
          }
      }

      输出:

      在 break 之前.
      这是在第二个块之后.

       

    2. continue:有时强制循环的早期迭代很有用。也就是说,您可能希望继续运行循环,但对于此特定迭代,请停止处理其主体中的其余代码。实际上,这是刚经过循环主体直到循环结束的跳转。continue语句执行此操作。
      例:
      // Java展示continue语句的用法
      class ContinueDemo
      {
          public static void main(String args[])
          {
              for (int i = 0; i < 10; i++)
              {
                  // 如果数字是偶数,跳过并且继续
                  if (i%2 == 0)
                      continue;
                  // 如果数字是基数,打印
                  System.out.print(i + " ");
              }
          }
      }

      输出:

      1 3 5 7 9
    3. return: return语句用于从方法显式地返回。也就是说,它使程序控件转移回该方法的调用者。
      例:
      // Java展示return关键字
      class Return
      {
          public static void main(String args[])
          {
              boolean t = true;
              System.out.println("在return之前.");
              if (t)
                  return;
              // 编译器将会忽略return之后的所有代码
              System.out.println("不会被执行.");
          }
      }

      输出:

      在return之前.