Menu
CoddyTech

打乱列表顺序

本课属于 Coddy Dart 学习旅程的“逻辑与流程控制”单元。第 8 课,共 65 课。

当你需要随机打乱列表中元素的顺序时,Dart 提供了 shuffle() 方法。这个方法会随机重新排列列表中的所有元素,生成无法预测的顺序,非常适合游戏、模拟,或任何需要随机排列的场景。

shuffle() 方法会直接修改原列表,随机改变所有元素的位置。每次调用 shuffle(),你都会得到相同元素的不同排列。

List<String> cards = ['Ace', 'King', 'Queen', 'Jack'];
print('Original: $cards');  // [Ace, King, Queen, Jack]

cards.shuffle();
print('Shuffled: $cards');  // [Queen, Ace, Jack, King](顺序随机)

此方法特别适合用于创建卡牌游戏、随机排列测验题目,或用于任何需要按不可预测顺序展示项目的应用。由于 shuffle() 会直接修改列表,你不需要创建新列表,现有列表会为你随机重新排列。

challenge icon

挑战

简单

创建一个程序,通过打乱球队顺序来随机安排比赛对阵。你的程序应该:

  1. 读取一个表示锦标赛名称的字符串输入(读取这个值,但不打印)
  2. 读取多个表示球队名称的字符串输入(收到空字符串时结束输入)
  3. 将球队打乱为随机顺序
  4. 每行打印一个球队名称

例如,如果锦标赛名称是 "Local Cup",球队是 "Wolves"、"Hawks",你的程序应该以打乱后的(随机)顺序输出球队名称,每行一个:

Hawks
Wolves

或者:

Wolves
Hawks

由于 shuffle() 会随机打乱顺序,因此球队的任何排列都有效。

亲手试试

import 'dart:io';

void main() {
  // 读取锦标赛名称
  String? tournamentName = stdin.readLineSync();
  
  // 读取队伍名称,直到遇到空字符串
  List<String> teams = [];
  String? teamName;
  while ((teamName = stdin.readLineSync()) != null && teamName!.isNotEmpty) {
    teams.add(teamName);
  }
  
  // TODO:打乱 teams 列表,随机安排对阵

  // 每行打印一支队伍
  for (String team in teams) {
    print(team);
  }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程控制中的所有课

自己练习: Dart 在线编译器