为什么即使条件为 true,If (isNormal == true) 语句也不起作用
我尝试做的代码如下
_checkResult() {
bool isNormal = false;
isNormal = userAnswer.every((item) => normalList.contains(item));
if (isNormal) {
print("Normal");
} else {
print("Try Again");
}
}
我已经尝试打印两个列表以检查两个数据是否相同,
如您所见,两个列表相同,但结果没有改变。请帮忙
您可以关注其中任何一个
bool withEvery(List<int> mainItems, List<int> subItems) {
final result = subItems.every((element) => mainItems.contains(element));
return result;
}
或
bool containsItem(List<int> mainItems, List<int> subItems) {
for (final i in subItems) {
if (!mainItems.contains(i)) {
return false;
}
}
return true;
}
获得想要的结果。
测试用例
test("containsItem n check", () {
final normalList = [1, 3, 2];
final userAnswer = [1, 2, 3];
final userAnswer1 = [2, 1, 3];
final userAnswer2 = [2, 1, 0];
final result = containsItem(normalList, userAnswer);
expect(result, true);
final result1 = containsItem(normalList, userAnswer1);
expect(result1, true);
final result2 = containsItem(normalList, userAnswer2);
expect(result2, false);
});
test("withEvery ", () {
final normalList = [1, 3, 2];
final userAnswer = [1, 2, 3];
final userAnswer1 = [2, 1, 3];
final userAnswer2 = [2, 1, 0];
final result = withEvery(normalList, userAnswer);
expect(result, true);
final result1 = withEvery(normalList, userAnswer1);
expect(result1, true);
final result2 = withEvery(normalList, userAnswer2);
expect(result2, false);
});
你的方法也运行良好
我不确定我是否理解这个问题,但是 我假设您在列表内容相同时尝试打印“正常”。 如果是的话,那么你的if条件应该是这样的
if(isNormal){ print('Normal'); }
意味着您必须按原样放置 bool 变量,但您使用了 Not (!) 运算符,因此它会给出相反的结果。