Java循环与选择结构全解析
立即解锁
发布时间: 2025-08-18 00:27:47 阅读量: 2 订阅数: 19 

### Java 循环与选择结构全解析
#### 1. for 循环的高级用法
在 Java 编程中,for 循环有许多有趣且实用的特性。
##### 1.1 表达式组合
for 循环的初始化和计数表达式可以是由逗号分隔的表达式列表。这在需要同时跟踪两个计数器变量时非常有用。例如,下面的代码可以同时从 1 数到 10 和从 10 数到 1:
```java
public class CountBothWays {
public static void main(String[] args) {
int a, b;
for (a = 1, b = 10; a <= 10; a++, b--)
System.out.println(a + " " + b);
}
}
```
运行该程序,控制台将输出:
```
1 10
2 9
3 8
4 7
5 6
6 5
7 4
8 3
9 2
10 1
```
使用多个表达式进行初始化和计数时,需要遵循以下规则:
- 在初始化表达式中,如果使用多个表达式,则不能声明变量。因此,在 `CountBothWays` 示例中,`a` 和 `b` 变量在 `for` 语句之前声明。
- 表达式列表中的表达式可以是赋值语句、递增或递减语句(如 `a++`)、方法调用或使用 `new` 关键字从类创建对象的对象创建语句。其他类型的语句,如 `if` 语句或循环,是不允许的。
- 测试表达式中不能列出多个表达式。但是,可以使用由布尔运算符创建的复合条件,因此不需要使用表达式列表。
下面是一个使用无体 `for` 循环的 `LaunchController` 程序示例:
```java
public class ExpressionGanging {
public static void main(String[] args) {
System.out.print("We are go for launch in T minus ");
for (int count = 10; count >= 0;
System.out.println((count == 8) ?
"Ignition sequence start!" :
count + "..."),
count--);
System.out.println("All engines running!");
System.out.println("Liftoff! We have a liftoff!");
}
}
```
这个程序的计数表达式是一个包含两个表达式的列表。第一个是对 `System.out.println` 的调用,使用三元 `?:` 运算符来确定要打印的内容。第二个表达式只是递减 `count` 变量。不过,像这样编写 `for` 语句不太合适,最好保持表达式简单,并在循环体中完成实际工作。
##### 1.2 省略表达式
for 循环的三个表达式都是可选的。如果省略一个或多个表达式,只需将分号作为占位符,以便编译器知道发生了什么。
省略测试表达式或迭代表达式并不常见,但省略初始化表达式很常见。例如,在进入循环之前,`for` 循环中递增的变量可能已经声明并初始化。在这种情况下,可以省略初始化表达式,如下所示:
```java
import java.util.Scanner;
public class OmitInitialization {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Where should I start? ");
int a = sc.nextInt();
for (; a >= 0; a--)
System.out.println(a);
}
}
```
这个 `for` 循环只是从用户输入的任何数字向下计数到零。
如果省略测试表达式,最好在循环中某个地方使用 `break` 语句,否则会陷入无限循环。也可以省略所有三个表达式,例如:
```java
public class InfiniteLoop {
public static void main(String[] args) {
for (;;)
System.out.println("Oops");
}
}
```
这个程序也会导致无限循环,但通常使用 `while(true)` 更清晰。
##### 1.3 中断和继续 for 循环
可以在 `for` 循环中使用 `break` 和 `continue` 语句,就像在 `while` 或 `do-while` 循环中一样。
下面是一个使用 `break` 语句的示例:
```java
public class ForDodecaphobia {
public static void main(String[] args) {
for (int number = 2; number <= 20; number += 2) {
if (number == 12)
break;
System.out.print(number + " ");
}
System.out.println();
}
}
```
当 `number` 等于 12 时,循环终止,控制台输出为:
```
2 4 6 8 10
```
下面是一个使用 `continue` 语句的示例:
```java
public class ForDodecaphobia2 {
public static void main(String[] args) {
for (int number = 2; number <= 20; number += 2) {
if (number == 12)
continue;
System.out.print(number + " ");
}
System.out.println();
}
}
```
当 `number` 等于 12 时,跳过该次循环,控制台输出为:
```
2 4 6 8 10 14 16 18 20
```
#### 2. 嵌套循环
循环可以包含循环,这种结构称为嵌套循环。内部的循环称为内循环,外部的循环称为外循环。
##### 2.1 简单的嵌套 for 循环
下面是一个使用一对嵌套 `for` 循环的简单程序:
```java
public class NestedLoop {
public static void main(String[] args) {
for (int x = 1; x < 10; x++) {
for (int y = 1; y < 10; y++)
System.out.print(x + "-" + y + " ");
System.out.println();
}
}
}
```
该程序由两个 `for` 循环组成。外循环使用 `x` 作为计数器变量,内循环使用 `y`。对于外循环的每次执行,内循环执行 10 次,并打印一行显示 `x` 和 `y` 的值。内循环结束后,调用 `System.out.println` 强制换行。
运行该程序,控制台将显示:
```
1-1 1-2 1-3 1-4 1-5 1-6 1-7 1-8 1-9
2-1 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9
3-1 3-2 3-3 3-4 3-5 3-6 3-7 3-8 3-9
4-1 4-2 4-3 4-4 4-5 4-6 4-7 4
```
0
0
复制全文
相关推荐









