Traversing Digits and Summing Even Numbers in C#

Introduction

Welcome! In today's lesson, we'll delve into a unique coding challenge that centers around traversing the digits of a number using a while loop under a specific condition. You'll have the opportunity to practice and enhance your skills in working with C#'s loops and conditional statements — fundamental concepts in programming. Are you as excited as I am? Let's dive in!

Task Statement

Today, our objective is to create a method that operates on an integer input. The task might seem simple, but it requires some ingenuity. Here's the mission: given an integer, n, we need to calculate and return the sum of its even digits — and here's the clincher — without converting n into a string. For instance, if n equals 4625, the output should be 12 because the sum of the even digits 4, 6, and 2 equals 12.

Keep in mind that n will always be a positive integer between 1 and 100,000,000. Ready to give it a shot? Great! Let's get started!

Solution Building: Step 1

To start, we need the basic structure of our method, where we begin by defining a variable digitSum to keep track of the sum of even digits.

Below is the initial platform for our method:

public class Solution {
    public int SumEvenDigits(int n) {
        int digitSum = 0;
        // Our code will evolve from here
        return digitSum;
    }
}

Step 2: Setting up the Loop

The tool we've chosen to traverse through the digits of the input integer n is the while loop, which is set to run as long as n is greater than zero. Let's incorporate this into our method:

public class Solution {
    public int SumEvenDigits(int n) {
        int digitSum = 0;
        while (n > 0) {
            // We'll develop our method from here
        }
        return digitSum;
    }
}

Step 3: Extracting and Processing Each Digit

Inside our loop, we'll first extract the last digit of n using the modulo operation (n % 10). If the digit is even, we'll increase our digitSum by this digit.

After processing a digit, we'll then chop off the last digit of n using integer division (n / 10), which allows the while loop to proceed to the next digit. Here's how this appears in the code:

public class Solution {
    public int SumEvenDigits(int n) {
        int digitSum = 0;
        while (n > 0) {
            int digit = n % 10;
            if (digit % 2 == 0) {  // Check if the digit is even
                digitSum += digit;
            }
            n = n / 10;  // Remove the last digit
        }
    }
}
Sign up

Join the 1M+ learners on CodeSignal

Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal