使用 'every' 检查条件
本课属于 Coddy Dart 学习旅程的“逻辑与流程控制”单元。第 14 课,共 65 课。
any() 会检查是否至少有一个元素满足条件,但有时你需要确认列表中的所有元素都符合特定要求。every() 方法会根据你的条件逐一测试每个元素,只有当所有元素都通过测试时才返回 true。
every() 方法接收一个测试函数,该函数会针对每个元素返回 true 或 false。如果有任何元素未通过测试,every() 会立即返回 false。只有每个元素都通过测试时,它才会返回 true。
List<int> examScores = [75, 82, 68, 91, 77];
// 检查是否所有学生都及格(score > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed); // true这种方法在验证场景中特别有用,你需要确保所有项都符合特定条件后再继续。every() 方法一旦发现有元素未通过测试,就会立即停止检查,因此在需要确保大型列表中的所有项都符合要求时,效率很高。
挑战
简单编写一个程序,通过检查一批产品是否都符合要求的标准来管理质量控制系统。你的程序应该:
- 读取一个表示工厂名称的字符串输入
- 读取多个表示产品质量评分的整数输入(收到
-1时结束输入) - 读取一个表示最低质量标准阈值的整数输入
- 使用
every()方法检查所有产品评分是否都大于或等于最低阈值 - 按照下方所示的准确格式打印质量控制结果
例如,如果工厂名称是 "Electronics Factory",质量评分依次为 85、92、78、88、95,最低阈值为 75,你的程序应该输出:
Factory: Electronics Factory
Quality scores: [85, 92, 78, 88, 95]
Minimum standard: 75
Checking if all scores >= 75
All products passed: true
Status: Batch approved for shipment如果工厂名称是 "Textile Mill",质量评分依次为 68、82、74、91,最低阈值为 70,你的程序应该输出:
Factory: Textile Mill
Quality scores: [68, 82, 74, 91]
Minimum standard: 70
Checking if all scores >= 70
All products passed: false
Status: Batch rejected - quality improvement required如果工厂名称是 "Food Processing",质量评分依次为 95、98、92,最低阈值为 90,你的程序应该输出:
Factory: Food Processing
Quality scores: [95, 98, 92]
Minimum standard: 90
Checking if all scores >= 90
All products passed: true
Status: Batch approved for shipment你的程序必须使用 every() 方法,验证所有质量评分是否都大于或等于最低阈值。如果所有产品都符合标准,则显示 "Batch approved for shipment";如果有任何产品未达到最低要求,则显示 "Batch rejected - quality improvement required"。
亲手试试
import 'dart:io';
void main() {
// 读取工厂名称
String? factoryName = stdin.readLineSync();
// 读取质量评分,直到遇到 -1
List<int> qualityScores = [];
while (true) {
int score = int.parse(stdin.readLineSync()!);
if (score == -1) {
break;
}
qualityScores.add(score);
}
// 读取最低阈值
int minThreshold = int.parse(stdin.readLineSync()!);
// TODO: 在下方编写你的代码
// 使用 every() 方法检查所有评分是否达到最低标准
// 按要求的格式打印结果
print('Factory: $factoryName');
print('Quality scores: $qualityScores');
print('Minimum standard: $minThreshold');
print('Checking if all scores >= $minThreshold');
// 打印所有产品是否都通过,以及最终状态
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程控制中的所有课
自己练习: Dart 在线编译器