Appearance
第5章:Dart 流程控制
5.1 条件判断语句
if-else 语句
基本语法:
dart
if (condition) {
// 条件为真时执行的代码
} else {
// 条件为假时执行的代码
}示例:
dart
void main() {
int age = 18;
if (age >= 18) {
print('成年人');
} else {
print('未成年人');
}
}if-else if-else 语句
基本语法:
dart
if (condition1) {
// 条件1为真时执行的代码
} else if (condition2) {
// 条件2为真时执行的代码
} else {
// 所有条件都为假时执行的代码
}示例:
dart
void main() {
int score = 85;
if (score >= 90) {
print('等级:A');
} else if (score >= 80) {
print('等级:B');
} else if (score >= 70) {
print('等级:C');
} else if (score >= 60) {
print('等级:D');
} else {
print('等级:F');
}
}结合条件运算符简化代码
dart
void main() {
int age = 18;
String message = age >= 18 ? '成年人' : '未成年人';
print(message);
}5.2 循环语句
for 循环
基本语法:
dart
for (initialization; condition; increment) {
// 循环体
}示例:
dart
void main() {
// 打印1到5
for (int i = 1; i <= 5; i++) {
print(i);
}
}for-in 循环(遍历集合)
基本语法:
dart
for (var item in collection) {
// 循环体
}示例:
dart
void main() {
List<String> fruits = ['苹果', '香蕉', '橙子'];
for (var fruit in fruits) {
print(fruit);
}
}while 循环
基本语法:
dart
while (condition) {
// 循环体
}示例:
dart
void main() {
int i = 1;
while (i <= 5) {
print(i);
i++;
}
}do-while 循环
基本语法:
dart
do {
// 循环体
} while (condition);示例:
dart
void main() {
int i = 1;
do {
print(i);
i++;
} while (i <= 5);
}循环控制
break 语句
作用:终止循环
示例:
dart
void main() {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // 当i等于5时终止循环
}
print(i);
}
}continue 语句
作用:跳过当前循环,进入下一次循环
示例:
dart
void main() {
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // 跳过偶数
}
print(i);
}
}5.3 switch-case 语句
基本语法:
dart
switch (expression) {
case value1:
// 代码
break;
case value2:
// 代码
break;
default:
// 代码
break;
}示例:
dart
void main() {
String grade = 'B';
switch (grade) {
case 'A':
print('优秀');
break;
case 'B':
print('良好');
break;
case 'C':
print('及格');
break;
case 'D':
print('不及格');
break;
default:
print('无效等级');
break;
}
}注意:在 Dart 中,switch-case 语句的每个 case 都必须以 break 结束,否则会导致编译错误(防止 case 穿透)。
5.4 实操案例
用流程控制实现简单逻辑:
求最值
dart
void main() {
List<int> numbers = [5, 2, 9, 1, 7];
int max = numbers[0];
int min = numbers[0];
for (int number in numbers) {
if (number > max) {
max = number;
}
if (number < min) {
min = number;
}
}
print('最大值: $max');
print('最小值: $min');
}遍历数据
dart
void main() {
List<String> names = ['Alice', 'Bob', 'Charlie', 'David'];
print('使用 for 循环:');
for (int i = 0; i < names.length; i++) {
print('${i + 1}. ${names[i]}');
}
print('\n使用 for-in 循环:');
for (var name in names) {
print(name);
}
print('\n使用 while 循环:');
int i = 0;
while (i < names.length) {
print(names[i]);
i++;
}
}条件筛选
dart
void main() {
List<int> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
List<int> evenNumbers = [];
List<int> oddNumbers = [];
for (int number in numbers) {
if (number % 2 == 0) {
evenNumbers.add(number);
} else {
oddNumbers.add(number);
}
}
print('偶数: $evenNumbers');
print('奇数: $oddNumbers');
}5.5 新手易错点
循环条件错误:
- 错误示例:
for (int i = 0; i <= 5; i--)(无限循环) - 正确示例:
for (int i = 0; i <= 5; i++)或for (int i = 5; i >= 0; i--)
- 错误示例:
break/continue 使用不当:
- 错误示例:在循环外使用 break 或 continue
- 正确示例:只在循环体内使用 break 或 continue
switch-case 穿透:
- 错误示例:在 case 语句末尾忘记添加 break
- 正确示例:每个 case 语句末尾都添加 break
条件表达式错误:
- 错误示例:
if (age = 18)(赋值操作,总是为真) - 正确示例:
if (age == 18)(比较操作)
- 错误示例:
空安全问题:
- 错误示例:
if (name.length > 0)(name 可能为 null) - 正确示例:
if (name != null && name.length > 0)或if (name?.length != null && name.length > 0)
- 错误示例:
