如果您的Java程序需要在两个或三个操作之间做出选择,那么If、then、else语句就足够了。然而,当一个程序可能需要做出许多选择时,if、then、else语句开始感到麻烦。在代码开始看起来不整洁之前,如果要添加语句,那么就只有这么多了。当需要跨多个选项进行决策时,请使用switch语句。
switch语句允许程序将表达式的值与备选值列表进行比较。例如,假设您有一个包含数字1到4的下拉菜单。根据选择的数字,您希望您的程序执行不同的操作:
//let's say the user picks number 4int menuChoice = 4;switch (menuChoice){ case 1: JOptionPane.showMessageDialog(null, "You chose number 1."); break; case 2: JOptionPane.showMessageDialog(null, "You chose number 2."); break; case 3: JOptionPane.showMessageDialog(null, "You chose number 3."); break; //This option gets chosen because the value 4 matches the value of //the menuChoise variablecase 4: JOptionPane.showMessageDialog(null, "You chose number 4."); break; default: JOptionPane.showMessageDialog(null, "Something went wrong!"); break;}如果查看switch语句的语法,您应该注意以下几点:
1.包含需要与之进行比较的值的变量位于顶部括号内。
2.每个备选选项都以案例标签开始。接下来是要与顶部变量进行比较的值,后面是冒号。例如,case1:是一个case标签,后跟值1-它可以很容易地是case 123:或case-9:。您可以根据需要选择任意多个选项。
3.如果您查看上述语法,第四个备选选项将突出显示—案例标签、它执行的代码(即JOptionPane)和break语句。break语句表示需要执行的代码结束。如果你看一下,你会发现每个选项都以break语句结尾。记住在break语句中添加内容是非常重要的。考虑下面的代码:
//let's say the user picks number 1int menuChoice = 1;switch (menuChoice)case 1: JOptionPane.showMessageDialog(null, "You chose number 1.");case 2: JOptionPane.showMessageDialog(null, "You chose number 2.");break;case 3: JOptionPane.showMessageDialog(null, "You chose number 3."); break;case 4: JOptionPane.showMessageDialog(null, "You chose number 4."); break;default: JOptionPane.showMessageDialog(null, "Something went wrong!"); break;}您可能会看到一个对话框,上面写着“youselectnumber 1”,但是由于没有与第一个case标签匹配的break语句,第二个case标签中的代码也会被执行。这意味着下一个对话框“您选择了数字2”也将出现。
4.switch语句底部有一个默认标签。这就像是一张安全网,以防箱子标签的值都与所比较的值不匹配。当没有选择所需的选项时,提供一种执行代码的方法非常有用。
如果您总是希望选择其他选项中的一个,那么您可以省略默认标签,但是在您创建的每个switch语句的末尾添加一个标签是一个好习惯。它似乎不太可能被使用,但错误可能会潜入代码中,并有助于捕获错误。
随着JDK 7的发布,Java语法的一个变化是能够在switch语句中使用字符串。能够比较switch语句中的字符串值非常方便:
String name = "Bob";switch (name.toLowerCase()){ case "joe": JOptionPane.showMessageDialog(null, "Good morning, Joe!"); break; case "michael": JOptionPane.showMessageDialog(null, "How's it going, Michael?"); break; case "bob": JOptionPane.showMessageDialog(null, "Bob, my old friend!"); break; case "billy": JOptionPane.showMessageDialog(null, "Afternoon Billy, how's the kids?"); break; default: JOptionPane.showMessageDialog(null, "Pleased to meet you, John Doe."); break;}在比较两个字符串值时,如果确保它们都在同一个案例中,则比较起来会容易得多。使用.toLowerCase方法意味着所有大小写标签值都可以是小写的。
•要比较的变量类型必须是char、byte、short、int、Character、byte、short、Integer、String或enum类型。
•案例标签旁边的值不能是变量。它必须是一个常量表达式(例如,int-literal、char-literal)。
•所有案例标签上的常量表达式值必须不同。以下情况将导致编译时错误:
switch (menuChoice){ case 323: JOptionPane.showMessageDialog(null, "You chose option 1."); break; case 323: JOptionPane.showMessageDialog(null, "You chose option 2."); break;•开关语句中只能有一个默认标签。
•当为switch语句使用对象(例如字符串、整数、字符)时,请确保该对象不为null。执行switch语句时,null对象将导致运行时错误。
...Buffer和stringbuilder是Java中的类。字符串在Java编程中被广泛使用。一旦创建了字符串对象,就不可能更改它们。每次字符串发生更改时,它都会创建一个新字符串。即使是连接到现有字符串,它也会创建一个新字符串。这会导致内...
...之前,这些语句执行一次。当迭代次数在开始时已知时,使用for循环。初始化首先发生。然后检查测试表达式。如果为真,则执行循环。然后计算更新表达式。再次检查测试表达式。如果为真,则执行循环。这个过程会重复,直...
...的控制流。如果程序员想检查单个变量的值,那么他可以使用switch语句。本文讨论if-else和switch之间的区别。if-else和switch的关键区别在于,在if-else中,执行块基于if语句中表达式的求值,而在switch中,要执行的语句取决于传递给...
...该数据集需要表示个人识别信息(PII)时,您通常不希望使用表示实际人员的真实数据。在这里,我们将带您了解如何使用PowerShell为此类场合生成随机姓名和电话号码列表。 你需要什么 在开始之前,您应该掌握一些工具和信...
...通用的数据访问,尤其是存储在关系数据库中的数据。它使用用Java编程语言编写的JDBC驱动程序将任何Java应用程序与数据库连接起来。它允许我们连接到所有公司数据库,即使在异构环境中也是如此。 Statement和PreparedStatement是表...
专业的java开发人员通常使用IDE(集成开发环境)如Eclipse、NetBeans等来编写java程序。但是,如果您的机器中安装了所需的软件,您甚至可以使用记事本编写一个简单的java程序。 设置开发环境编写简单的java程序 首先,我...
if-else和switch的主要区别在于,在if-else中,要执行的块取决于if语句中的表达式,而在switch中,执行取决于传递给它的单个变量。 在编程中有各种决策结构。如果还有两个,就换。如果还有,有两个街区,好像和其他。“if”块...
...组可以在关系数据库上反复执行的SQL语句,而函数是一组使用编程语言编写的可以反复执行的指令。 关系数据库管理系统(RDBMS)是基于关系模型的数据库管理系统。它将数据存储在数据库中。每个数据库由多个相互关联的表组...
...条语句的末尾加一个分号。在Python中,不需要在语句末尾使用分号。 语句块 在Java中,一对大括号围绕着一个语句块。然而,在Python中,语句块是缩进的。 速度 此外,与Python相比,Java是一种速度更快的语言。 复杂性 Java和Python...