Skip to content

第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 新手易错点

  1. 循环条件错误

    • 错误示例:for (int i = 0; i <= 5; i--)(无限循环)
    • 正确示例:for (int i = 0; i <= 5; i++)for (int i = 5; i >= 0; i--)
  2. break/continue 使用不当

    • 错误示例:在循环外使用 break 或 continue
    • 正确示例:只在循环体内使用 break 或 continue
  3. switch-case 穿透

    • 错误示例:在 case 语句末尾忘记添加 break
    • 正确示例:每个 case 语句末尾都添加 break
  4. 条件表达式错误

    • 错误示例:if (age = 18)(赋值操作,总是为真)
    • 正确示例:if (age == 18)(比较操作)
  5. 空安全问题

    • 错误示例:if (name.length > 0)(name 可能为 null)
    • 正确示例:if (name != null && name.length > 0)if (name?.length != null && name.length > 0)

© 2026 编程马·菜鸟教程 版权所有