Dart测验程序无论答案对错均提示错误的问题求助
问题解决:测验程序始终提示错误的排查与修复
核心问题分析
你的代码逻辑是仅当用户答案存在于字典中,且对应值为true时才判定正确,但当前无论答案对错都提示错误,大概率是以下原因导致:
- 键值匹配异常:
userAnswer与字典中的键存在格式差异(比如大小写不一致、多了空格),或者类型不匹配(比如字典键是整数1,但用户输入的是字符串"1") - 正确答案的value不符合预期:如果字典里正确答案对应的value不是布尔值
true(比如用字符串"correct"或数字1标记),entry.value[userAnswer]!会被条件判断视为false - 空输入未被完全过滤:虽然判断了
userAnswer != null,但如果用户输入是空字符串"",也会导致containsKey返回false
修复方案
标准化输入与键的格式
在判断前对用户输入做统一处理,消除格式差异:final normalizedAnswer = userAnswer?.trim().toLowerCase(); if (normalizedAnswer != null && entry.value.containsKey(normalizedAnswer) && entry.value[normalizedAnswer]!) { print('Richtig!\n'); score++; } else { print('Falsch!\n'); }同时确保字典中的键也采用对应的小写无空格格式。
修正字典键值对的判断逻辑
如果你的字典用非布尔值标记正确答案(比如字符串"correct"),要同步修改条件:// 示例:正确答案对应"correct"时的判断 if (userAnswer != null && entry.value.containsKey(userAnswer) && entry.value[userAnswer] == "correct") { print('Richtig!\n'); score++; } else { print('Falsch!\n'); }添加调试日志定位问题
在判断前打印关键数据,快速定位不匹配的环节:print('用户输入:$userAnswer'); print('字典所有键:${entry.value.keys}'); if (userAnswer != null) { print('输入对应value:${entry.value[userAnswer]}'); }
内容的提问来源于stack exchange,提问作者Michael Storz
相关产品推荐
相关产品推荐

