Home > Enterprise >  Can you replace ints in int Arrays?
Can you replace ints in int Arrays?

Time:01-26

I'm looking for a way to replace every int that is greater than 9 in an array with the sum of the digits. I'm gonna demonstrate an example below.

I have this array:

int[] ints2 = new int[] { ints[0] * 2, ints[1], ints[2] * 2, ints[3], ints[4] * 2, ints[5], ints[6] * 2, ints[7], ints[8] * 2, ints[9]}; 

And I want to replace the first int to whatever the sum is of the two digits. Lets say ints[0] = 9. And ints[0]*2 = 18. The sum should be 1 8 = 9.

Can I use some kind of replace method for ints? Or do you guys have any better ideas of how to deal with this issue?

I tried it like this, but obviously I'm wrong:

foreach (int number in ints)
            {
                int newNumberInt;
                
                if (number > 9)
                {
                    string newNum = number.ToString();
                    char[] charNum = newNum.ToCharArray();
                    int[] intNum = Array.ConvertAll(charNum, n => (int)Char.GetNumericValue(n));
                    newNumberInt = intNum[0]   intNum[1];                   
                }
                
                newNumberInt = number;
                 
            }

CodePudding user response:

You are close. Your mistakes are an incorrect addition of digits, and failure to replace the values in the array. Here is a one line method that adds all the digits in an integer (using System.Linq):

    //Adds up all the digits in a number
    private static int AddDigits(int number) => number.ToString().Sum(digitCharacter => int.Parse(digitCharacter.ToString()));

For replacing the values, a foreach loop directly on the array won't work, due to changing the contents of the array during enumeration. A simple solution is to use a for loop.

        for (int i = 0; i < ints.Length; i  )
        {
            var value = ints[i];
            ints[i] = value > 9 ? AddDigits(value) : value;
        }

Note: the AddDigits function I wrote only works for positive integers

CodePudding user response:

You could try this:

// Create a sample array
    int[] numbers = {2,7,21,15,27,18,3,4,5,12};

    for(int i =0; i < numbers.Count(); i  ){

        if (numbers[i] > 9){
            int a =  numbers[i] % 10;
            int b = numbers[i] /10;
            int c = a b;
            numbers[i] = c;
    
        }
        
    }
  •  Tags:  
  • Related