折叠列表时为什么会出现FormatException?

时间:2019-03-26 15:33:16

标签: dart

我正在尝试查找连续数字组成的系列中最大的5位数字。

代码:

import 'dart:math';

int solution(String digits) {
  List<int> sequence = digits.split('').map((digit) => int.parse(digit)).toList();
  List<int> fiveDigitNumbers = List<int>();

 sequence.fold(sequence, (remainder, digit) {
   fiveDigitNumbers.add(int.parse(remainder.take(5).join()));
   remainder = remainder.skip(5).toList();

   return remainder;
 });

   return fiveDigitNumbers.isEmpty ? 0:  fiveDigitNumbers.reduce((largest, number) => max(largest, number));
}

void main() {
  print(solution('12345').toString());
}

错误:

  

FormatException:无效的数字(在字符1处)

     

^

堆栈跟踪:

  

dart:core int.parse

     

package:solution / solution.dart 8:30解决方案。

     

dart:collection _ListBase&Object&ListMixin.fold

     

package:solution / solution.dart 7:12解决方案

     

test / solution_test.dart 6:12 main。

1 个答案:

答案 0 :(得分:0)

堆栈跟踪显示在第8行和第30列引发了异常,这是int.parse()调用。 int.parse()将为空字符串抛出该异常。连接空列表将产生一个空字符串。 remainder列表在每个数字上进行迭代之前将为空。而是使用另一个循环构造,例如fold

while