Java 中的决策


2022 年 1 月 4 日, Learn eTutorial
2494

在本教程中,我们将介绍 Java 中决策制定语句的基础知识、语法和用法,例如 if、if else、if else if、nested if 等。您还将学习如何在 Java 中处理 switch 语句。

我们都在现实生活中做过决定。在特定情况下,我们从各种选择中选择最佳行动方案以达到期望的结果。Java 中的决策制定概念也一样。与其他编程语言一样,我们使用决策制定语句来运行替代方案中的特定代码块,以获得期望的结果。

什么是决策制定?

定义上,决策制定是从可用的选项中选择一个合适的行动方案以实现期望结果的过程。

每种编程语言都有一些控制程序执行的条件。在 Java 中,决策制定语句根据表达式的测试条件提供要运行程序的语句或代码块的选择。决策制定结构测试程序中的一个或多个条件。如果表达式的值为 true,则控制流进入特定的代码块;否则,将为测试值 false 执行另一组代码。

Java 支持的决策制定语句的工作原理如下:

DecisionMaking_if

决策制定语句的工作原理

如果满足测试条件,则执行一组语句,否则执行另一组语句。测试条件有助于决策制定选择要执行的语句集。

决策制定语句的类型

以下是我们将在本教程中介绍的 Java 中各种类型的决策制定语句:

  1.  If 语句
    • 简单 If 语句
    • If-else 语句
    • 嵌套 If 语句
    • If-else-If 语句
  2. Switch 语句

现在让我们详细研究每个主题。

1.If 语句

if 语句是一个强大的工具和简单的决策制定语句,用于使用值检查特定条件。它检查测试条件的值是否为 true。它控制条件语句的执行流程。

在 Java 中,有各种形式的 If 语句,这些语句在程序中的使用取决于要测试的条件的复杂性。

Boolean 是 if 语句中主要用于条件测试的数据类型。Boolean 是一种原始数据类型,仅表示两个可能的值:true/false。如果您还没有学习过布尔数据类型,请访问我们的Java 中的数据类型教程

1.简单 If

if 语句,使用两个可能的值:true/false 来检查条件。如果条件为 true,它将执行条件体之后的代码块。
If 语句的通用语法


If (test_condition)
{
// block of codes();
}
// statement;


代码块可以是一个单独的语句,也可以是多个语句。

If 语法的工作原理

在这里,如果测试条件为 true,则执行紧跟的代码集;否则,控制将跳到 if 语句之后的指令。

If 语句流程图

为了更好地理解,让我们通过流程图查看其工作原理。

Fliowchart_if

If 语句流程图

现在来看简单 if 语句的示例;


public class IfStatementEx {

 public static void main(String[] args) {
  int score = 100;
  if(score==100) {
   System.out.println("Century!!!");
  }
  System.out.println("Exit");
 }
  

输出


Century!!!
Exit

程序说明

在该程序中,我们最初为变量 score 分配了一个整数值。然后使用 if 语句,我们检查变量 score 中的值是否为 100。如果相等,则程序应显示消息 Century!!!。然后它会执行下一条语句,该语句又是带有 Exit 消息的打印语句。如果提供的条件不满足,则将打印 if 条件之后的语句,即消息 Exit 将被打印。简单 if 语句的缺点是它只执行真值之后的语句,并且不处理假情况。

2.If-else 语句

If-else 语句的工作原理与简单的 if 语句类似。在 if 语句中,如果测试值为 false,则执行 If 语句之后的指令;而在 if-else 语句中,当 if 的测试条件值为 false 时,将执行 else 部分。

if-else 语句的语法是


If(test_condition)
{
// block of codes();
}
else
{
// block of codes();
}

 

If-else 语句的工作原理

在这里,如果测试条件为 true,则执行 if 部分的代码集;或者,如果测试条件为 false,则执行 else 部分的代码集。之后,控制将移至其余语句。

Fliowchart_if

If-else 语句流程图

示例


public class IfStatementEx {

 public static void main(String[] args) {
  int n = -10;
  if(n > 0) {
   System.out.println("Positive Number");
  }
  else {
   System.out.println("Negative Number");
  }
  System.out.println("Exit");
 }
 

输出


Negative Number
Exit

从上面的示例可以清楚地看出,如果给定的条件 n>0 为

  • True,应显示“Positive Number”作为输出
  • False,应显示“Negative Number”作为输出

在这里,在我们的例子中,n 的值为 -10,这是一个负数,因此显示了输出。

3.Java 中的 If-else-If 阶梯语句

if-else-if 阶梯可用于检查多个条件。它是一个非常常见的编程结构,允许检查多个条件。

通用语法如下:


If (test_condtion 1)
{
// block of codes();
}
elseIf (test_condtion 2)
{
// block of codes();
}
elseIf (test_condtion 3)
{
// block of codes();
}
 

If-else-If 阶梯的工作原理

如果测试条件为 true,则执行测试条件之后的代码块;否则,控制将移至检查 elseif 序列中提到的后续条件。如果所有条件都不满足,则将执行 else 语句。

工作流程图

Fliowchart_if

If-else-If 语句流程图

示例



public class IfStatementEx {

 public static void main(String[] args) {
  
  String color = "Red";
  if(color == "Green") {
   System.out.println("GO,PLEASE");
  }
  else if(color =="Orange") {
   System.out.println("WAIT, PLEASE");
  }
  else if(color =="Red"){
   System.out.println("STOP, PLEASE");
    } else {
     System.out.println("Signal not working");
    }
 
 }
}

 

输出


STOP, PLEASE

上面的示例展示了交通信号灯如何工作。这里

  • 首先检查颜色是否为绿色,如果为 true,则显示输出 GO, PLEASE
  • 如果不是,将再次检查颜色是否为橙色,当条件满足时,应显示 WAIT, PLEASE
  • 如果不是,将再次检查颜色是否为红色,如果是,输出将是 STOP,PLEASE
  • 如果所有条件都不满足,则执行 else 语句,该语句将打印“Signal not working”.”。
     

4.嵌套 If

一个 if 语句内部的另一个 if 语句称为Nested If。有时,我们需要检查一个 if 语句来执行另一个 If 语句的目标。

通用语法如下:


If(test_condition)
{
If(test_condition)
{
// block of codes();
}
Else
{
// block of codes();
}
}
else
{
// block of codes();
}
//statements();

 

语法的工作原理

如果测试条件为 true,则执行测试条件之后的代码块;这里代码块是另一个带有 else 部分的 if 语句。如果初始 if 条件为false,则将执行else 语句。

工作流程图

Fliowchart_if

Nested-if 语句流程图

示例



public class IfStatementEx {

 public static void main(String[] args) {
  
  int a = 10, b =20;
  if(a!=b ) {
   if(a>b) {
    System.out.println("a is greater than b");
   }else {
    System.out.println("a is less than b");
   }
  }else {
   System.out.println("a and b are the same  numbers");
  }
  
 }
}



 

输出


a is less than b

上面的程序展示了如何使用nested if 验证两个数字之间的关系。最初,它将检查两个数字是否为不同的数字。

  • 如果是,则再次检查第一个数字 a 是否大于 b。
    • 如果是,它将显示消息“a is greater than b”。
    • 如果不是,它将显示消息“a is less than b”
  • 如果不是,则程序将显示消息“ a and b are the same numbers

2. Switch 语句

Java 的switch 语句主要用作捷径,当我们有多个可用的选择来为每个选择执行不同任务时。Switch 是 Java 中多个 If 语句的捷径。

Switch case 语句的通用语法如下:


Switch(expression);
{
case 0:
Statement 0();
break;
case 1:
Statement1();
break;
case 2:
Statement2();
break;
case 3:
Statement3();
break;
case 4:
Statement4();
break;
default:
Statement details();
}



语法的工作原理

一旦评估了switch 语句中给定的表达式,该表达式的值将与每个 case 的值进行比较。当匹配时,将执行关联的代码块。Switch 语句可以使用 break 语句,也可以不使用 break 语句,并且请注意,它通常与 break 语句一起使用。

Fliowchart_if

SWITCH 语句流程图

查看以下程序



class Rainbow {
    public static void main(String[] args) {
        int colour = 7;
switch (colour) {
  case 1:
    System.out.println("Red");
    break;
  case 2:
    System.out.println("Orange");
    break;
  case 3:
    System.out.println("Yellow");
    break;
  case 4:
    System.out.println("Green");
    break;
  case 5:
    System.out.println("Blue");
    break;
  case 6:
    System.out.println("Indigo");
    break;
  case 7:
    System.out.println("Violet");
    break;
default:  System.out.println("Not a rainbow colour");
}
 
    }
}


 

输出


Violet

在这里,在这个程序中,colour 是一个整数变量,其值为 7。现在 switch 语句将评估该变量,获取值 7,并在其 case 值中搜索匹配项。我们有 case 7,其中包含一个打印语句,用于显示“Violet”作为其输出。

使用switch 语句时需要注意的重要事项。

  1. Switch 可以有一个或多个 case。
  2. case 值应唯一并遵循switch 表达式的类型。
  3. case 值应为字面量或常量。不允许使用变量。
  4. Switch 表达式可以是字符、字符串、整数、字节、短整型、长整型枚举
  5. Keywords breakdefault 是可选的。