Suppose I have a variable int a = 12345, I want to split a to [1,2,3,4,5] and add them like [1+2+3+4+5] and in final I want to get a result of a = 15 how can I achieve this?


Solution 1: Jaison Thomas

All u have to do is recursively add every digit individually.

void main() {

  int a = 12345; 
  int sum = 0; 
  while(a>0){
      sum  = sum + (a%10); 
      a = (a/10).floor(); 
  }  
  print(sum);
  //if u want to store in a 
  a = sum;
}


Solution 2: Khadga shrestha

You can achieve using the split() as

void main(){
  var i=34567;
  var iStr=i.toString().split('');
  var exp= iStr.join('+');
  var sum=iStr.fold(0,(a,b)=>int.parse(a.toString())+int.parse(b));
  print(exp);
  print(sum);  
}

Output: 3+4+5+6+7 25 If you need only the sum of the integer then

void main() {
  var i = 34567;
  var iStr = i.toString().split('');
  var sum = iStr.fold(0, (a, b) => int.parse(a.toString()) + int.parse(b));
  print(sum);
}


Solution 3: OMi Shah

There are different ways to achieve the same, one of the ways is as:

void main() {
  int num = 12345;
  int sum = 0;

  String numAsString = num.toString();

  for (int i = 0; i < numAsString.length; i++) {
    sum += int.parse(numAsString[i]);
  }

  print(sum); // 15
}


Solution 4: Dieter Eickstaedt

I would approach it by first converting the integer to a String. Then mapping each single character into an int and finally simply reduce the iterator of ints into the sum.

int num = 12345;
  print(num
    .toString()
    .split('')
    .map(
      (c) =>int.parse(c)
    ).reduce((a,b) => a+b));