Java循环控制语句详解
立即解锁
发布时间: 2025-08-17 02:24:54 阅读量: 1 订阅数: 6 

# Java 循环控制语句详解
## 1. do - while 语句
### 1.1 基本概念
do - while 语句是一种后测试循环,与 while 语句(前测试循环)不同,后测试循环会先执行循环体,再进行条件判断,这就保证了循环体至少会执行一次。其一般格式如下:
```java
do
<statement>
while (<boolean expression>);
```
这里的 `<statement>` 可以是单条语句或复合语句。即便循环体中只有一条语句,也建议使用左右花括号,以增强代码的可读性。
### 1.2 示例代码
#### 1.2.1 计算整数和
下面通过一个示例,计算从 1 开始的整数和,直到和大于 1000000 为止:
```java
int sum = 0, number = 1;
do {
sum += number;
number++;
} while (sum <= 1000000);
```
该代码的控制流程如下:
```mermaid
graph TD;
A[开始] --> B[初始化 sum = 0, number = 1];
B --> C{sum <= 1000000?};
C -- 是 --> D[sum += number; number++];
D --> C;
C -- 否 --> E[结束];
```
#### 1.2.2 输入年龄验证
接下来,使用 do - while 语句实现输入年龄验证,要求年龄在 0 到 130 之间:
```java
do {
System.out.print("Your Age (between 0 and 130): ");
age = scanner.nextInt();
} while (age < 0 || age > 130);
```
不过,此代码没有显示错误信息,用户可能会对输入不被接受感到困惑。为了提供更好的用户体验,可添加错误提示:
```java
do {
System.out.print("Your Age (between 0 and 130): ");
age = scanner.nextInt();
if (age < 0 || age > 130) {
System.out.println("An invalid age was entered. Please try again.");
}
} while (age < 0 || age > 130);
```
但这种方式包含了额外的 if 语句,重复了 do - while 的布尔表达式,使代码更难理解。在这种情况下,使用 while 语句可能更合适。
### 1.3 多条件循环与布尔变量
当循环有多个停止条件,且需要对每个条件执行不同响应时,使用布尔变量可以使循环语句更易读。例如,计算用户输入的奇数和,当输入 0、偶数或和大于 1000 时停止循环:
```java
boolean repeat = true;
sum = 0;
do {
System.out.print("Enter integer: ");
num = scanner.nextInt();
if (num % 2 == 0) {
System.out.print("Error: even number was entered");
repeat = false;
} else if (num == 0) {
System.out.print("Sum = " + sum);
repeat = false;
} else {
sum += num;
if (sum > 1000) {
System.out.print("Sum became larger than 1000");
repeat = false;
}
}
} while (repeat);
```
使用布尔变量避免了测试条件的重复,提高了代码的可读性。
### 1.4 最大公约数计算
下面是使用 do - while 语句实现的最大公约数计算方法:
```java
public int gcd_do(int m, int n) {
int r;
do {
r = n % m;
n = m;
m = r;
} while (r != 0);
return n;
}
```
## 2. 循环 - 半控制
### 2.1 基本概念
循环 - 半控制是一种特殊的循环结构,它允许在循环体中间进行终止条件的测试。与 while 和 do - while 循环不同,循环 - 半控制在最后一次循环时,只执行循环体的上半部分。
### 2.2 示例代码
#### 2.2.1 输入姓名验证
考虑以下使用 while 循环和预读的示例:
```java
String name;
System.out.print("Your name: ");
name = scanner.next();
while (name.length() == 0) {
System.out.println("Invalid entry. You must enter at least one character.");
System.out.print("Your name: ");
name = scanner.next();
}
```
该代码在循环前后重复了输入提示和读取操作。使用循环 - 半结构可以避免代码重复:
```java
String name;
while (true) {
System.out.print("Your name: ");
name = scanner.next();
if (name.length() == 0) break;
System.out.println("Invalid entry. You must enter at least one character.");
}
```
其控制流程如下:
```mermaid
graph TD;
A[开始] --> B[输出提示信息并读取输入];
B --> C{name.length() == 0?};
C -- 是 --> D[跳出循环];
C -- 否 --> E[输出错误信息];
E --> B;
```
### 2.3 使用注意事项
使用循环 - 半控制时,需要注意以下两点:
- **避免无限循环**:确保循环体中至少包含一个能跳出循环的 if 语句。
- **避免多个退出点**:尽量减少使用多个能跳出循环的 if 语句,以保持控制逻辑的简单和易读。同时,循环应尽量简短,使控制逻辑更加清晰。
### 2.4 其他示例
#### 2.4.1 计算平均分数
以下是一个计算平均分数的示例,当输入负数时停止
0
0
复制全文
相关推荐









