You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart测验程序无论答案对错均提示错误的问题求助

问题解决:测验程序始终提示错误的排查与修复

核心问题分析

你的代码逻辑是仅当用户答案存在于字典中,且对应值为true时才判定正确,但当前无论答案对错都提示错误,大概率是以下原因导致:

  • 键值匹配异常:userAnswer与字典中的键存在格式差异(比如大小写不一致、多了空格),或者类型不匹配(比如字典键是整数1,但用户输入的是字符串"1")
  • 正确答案的value不符合预期:如果字典里正确答案对应的value不是布尔值true(比如用字符串"correct"或数字1标记),entry.value[userAnswer]!会被条件判断视为false
  • 空输入未被完全过滤:虽然判断了userAnswer != null,但如果用户输入是空字符串"",也会导致containsKey返回false

修复方案

  1. 标准化输入与键的格式
    在判断前对用户输入做统一处理,消除格式差异:

    final normalizedAnswer = userAnswer?.trim().toLowerCase();
    if (normalizedAnswer != null && entry.value.containsKey(normalizedAnswer) && entry.value[normalizedAnswer]!) {
      print('Richtig!\n');
      score++;
    } else {
      print('Falsch!\n');
    }
    

    同时确保字典中的键也采用对应的小写无空格格式。

  2. 修正字典键值对的判断逻辑
    如果你的字典用非布尔值标记正确答案(比如字符串"correct"),要同步修改条件:

    // 示例:正确答案对应"correct"时的判断
    if (userAnswer != null && entry.value.containsKey(userAnswer) && entry.value[userAnswer] == "correct") {
      print('Richtig!\n');
      score++;
    } else {
      print('Falsch!\n');
    }
    
  3. 添加调试日志定位问题
    在判断前打印关键数据,快速定位不匹配的环节:

    print('用户输入:$userAnswer');
    print('字典所有键:${entry.value.keys}');
    if (userAnswer != null) {
      print('输入对应value:${entry.value[userAnswer]}');
    }
    

内容的提问来源于stack exchange,提问作者Michael Storz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:30:56