Java控制语句详解
立即解锁
发布时间: 2025-08-18 01:52:36 阅读量: 1 订阅数: 9 

### Java控制语句详解
#### 1. 逻辑运算符 ||
在编程中,逻辑运算符起着至关重要的作用。“||” 是逻辑 “或” 运算符,它是 “&&”(逻辑与)运算符的补充。假设我们有一个名为 `response` 的变量,如果用户想要退出,它包含小写或大写的 “q”;如果用户想要继续,则包含其他字符。我们的目标是,当用户输入小写或大写的 “q” 时,打印 “Bye”。
以下是伪代码的实现思路:
```plaintext
if response equals “q” or “Q”
print “Bye”
```
在 Java 中,我们不能直接使用 “or”,而必须使用 “||” 来实现逻辑或操作。以下是一个初步的 Java 代码实现:
```java
Scanner stdIn = new Scanner(System.in);
String response;
System.out.print("Enter q or Q: ");
response = stdIn.nextLine();
if (response == "q" || response == "Q") {
System.out.println("Bye");
}
```
然而,这段代码存在问题。当用户输入 “q” 或 “Q” 时,程序并不会打印 “Bye”。这是因为在 Java 中,使用 “==” 比较字符串时,比较的是字符串的内存地址,而不是字符串的内容。即使两个字符串内容相同,但如果它们的内存地址不同,“==” 比较的结果也会是 false。
为了解决这个问题,我们可以使用 `equals` 方法来比较字符串的内容。以下是修正后的代码:
```java
if (response.equals("q") || response.equals("Q")) {
System.out.println("Bye");
}
```
另外,我们还可以使用 `equalsIgnoreCase` 方法,它可以忽略大小写进行比较:
```java
if (response.equalsIgnoreCase("q")) {
System.out.println("Bye");
}
```
或者,我们可以使用 `charAt` 方法将字符串转换为字符,然后使用 “==” 比较字符:
```java
char resp = response.charAt(0);
if (resp == 'q' || resp == 'Q') {
System.out.println("Bye");
}
```
##### 1.1 错误类型
在编程中,常见的错误类型有三种:编译时错误、运行时错误和逻辑错误。
- **编译时错误**:在编译过程中由编译器识别的错误。编译器会生成错误消息。
- **运行时错误**:程序运行时发生的错误,会导致程序异常终止。Java 虚拟机(JVM)会生成错误消息。
- **逻辑错误**:程序正常运行结束,但输出结果错误。逻辑错误最难发现和修复,因为没有错误消息提示。
#### 2. 逻辑运算符 !
逻辑 “非” 运算符 “!” 用于反转布尔值。假设我们有一个 `char` 类型的变量 `resp`,如果用户想要退出,它包含小写或大写的 ‘q’;如果用户想要继续,则包含其他字符。我们的目标是,当 `resp` 不是小写或大写的 “q” 时,打印 “Let’s get started. . . .”。
我们可以使用 “if, else” 语句,但使用空的 “if” 块并不是一个优雅的解决方案。我们可以使用 “!” 运算符来反转条件,避免使用空的 “if” 块。以下是代码示例:
```java
if (!(resp == 'q' || resp == 'Q')) {
System.out.println("Let's get started. . . .");
}
```
需要注意的是,“!” 运算符需要正确使用括号。外层括号是为了满足编译器对整个条件的要求,内层括号是为了确保 “!” 运算符作用于整个条件,而不是单个变量。另外,不要混淆 “!”(非)运算符和 “!=”(不等)运算符。“!” 运算符返回给定表达式的相反值,而 “!=” 运算符用于判断两个表达式是否不相等。
#### 3. switch 语句
`switch` 语句类似于 “if, else if” 形式的 `if` 语句,它允许我们从多个路径中选择一个。不同之处在于,`switch` 语句根据单个值来决定执行哪个路径,而 `if` 语句可以根据多个条件来决定。
##### 3.1 语法和语义
`switch` 语句的语法如下:
```java
switch (<controlling expression>) {
case <constant>:
<statement(s)>;
break;
case <constant>:
<statement(s)>;
break;
...
default:
<statement(s)>;
} // end switch
```
当执行 `switch` 语句时,控制会跳转到与控制表达式值匹配的 `case` 常量处,并执行后续的语句,直到遇到 `break` 语句。如果没有匹配的 `case` 常量,则控制会跳转到 `default` 标签(如果有)或跳出 `switch` 语句。
以下是 `switch` 语句执行流程的 mermaid 流程图:
```mermaid
graph TD;
A[开始] --> B{控制表达式值};
B --> C1{是否匹配 case 1};
C1 -- 是 --> D1[执行 case 1 语句];
D1 --> E1[遇到 break 跳出];
C1 -- 否 --> C2{是否匹配 case 2};
C2 -- 是 --> D2[执行 case 2 语句];
D2 --> E2[遇到 break 跳出];
C2 -- 否 --> ...;
... --> F{是否有 default};
F -- 是 --> G[执行 default 语句];
F -- 否 --> H[结束];
E1 --> H;
E2 --> H;
```
##### 3.2 ZIP 代码示例
我们可以编写一个程序,读取一个 ZIP 代码,并根据其第一位数字打印相关的地理区域。以下是不同 ZIP 代码开头对应的地理区域:
| ZIP 代码开头 | 打印消息 |
| --- | --- |
| 0, 2, 3 | <zip> is on the East Coast. |
| 4 - 6 | <zip> is in the Central Plains area. |
| 7 | <zip> is in the South. |
| 8 - 9 | <zip> is in the West. |
| 其他 | <zip> is an invalid ZIP Code. |
以下是实现该功能的 Java 代码:
```java
import java.util.Scanner;
public class ZipCode {
public static void main(S
```
0
0
复制全文
相关推荐









