打乱列表顺序
本课属于 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() 会直接修改列表,你不需要创建新列表,现有列表会为你随机重新排列。
挑战
简单创建一个程序,通过打乱球队顺序来随机安排比赛对阵。你的程序应该:
- 读取一个表示锦标赛名称的字符串输入(读取这个值,但不打印)
- 读取多个表示球队名称的字符串输入(收到空字符串时结束输入)
- 将球队打乱为随机顺序
- 每行打印一个球队名称
例如,如果锦标赛名称是 "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);
}
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程控制中的所有课
自己练习: Dart 在线编译器