【问题标题】:why I have get this errorin dart?为什么我在飞镖中有这个错误?
【发布时间】:2022-08-17 14:30:51
【问题描述】:

这是我的代码并收到这些错误:

  • 不能无条件调用运算符\'<\',因为接收者可以是\'null\'。
  • 不能将参数类型 \'int?\' 分配给参数类型 \'num\'。

代码

 void main()
        {
          int romanToInt(String s) {
              s=s;
              Map<String,int> roman = {
                  \'I\':1,
                  \'V\':5,
                  \'X\':10,
                  \'L\':50,
                  \'C\':100,
                  \'D\':500,
                  \'M\':1000
                };
                int result=0;
                for(int i=0;i<s.length;i++){
                  if(i+1<s.length && roman[s[i]]<roman[s[i+1]])
                  {
                    result-= roman[s[i]];
                  }else{
                    result+= roman[s[i]];
                  }
                }
                print(result);
              return result;
            }
        }
  • 使用空检查(!)运算符

标签: android flutter dart dart-null-safety


【解决方案1】:

尝试这个:

void main()
{
  int romanToInt(String s) {
    s=s;
    Map<String,int> roman = {
      'I':1,
      'V':5,
      'X':10,
      'L':50,
      'C':100,
      'D':500,
      'M':1000
    };
    int result=0;
    for(int i=0;i<s.length;i++){
      if(i+1<s.length && roman[s[i]]!<roman[s[i+1]]!)//<- add null check
      {
        result-= roman[s[i]]!; //<- add null check
      }else{
        result+= roman[s[i]]!;// <- add null check
      }
    }
    print(result);
    return result;
  }
}

【讨论】:

    【解决方案2】:

    您的代码有 2 个问题,第一个是 null 安全性,第二个是参数类型“int?”不能分配给参数类型“num”。

    您的代码可以像这样更改:

          int romanToInt(String s) {
        s=s;
        Map<String,int> roman = {
          'I':1,
          'V':5,
          'X':10,
          'L':50,
          'C':100,
          'D':500,
          'M':1000
        };
        int result=0;
        for(int i=0;i<s.length;i++){
          if(i+1<s.length && roman[s[i]]!<roman[s[i+1]]!.toInt())
          {
            result-= roman[s[i]]!.toInt();
          }else{
            result+= roman[s[i]]!.toInt();
          }
        }
        print(result);
        return result;
      }
    

    【讨论】:

      猜你喜欢
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      • 2021-08-14
      • 1970-01-01
      • 2021-04-15
      • 2019-02-05
      • 1970-01-01
      相关资源
      最近更新 更多