如何在C#中将两位数转换为单位数

时间:2016-10-12 06:45:53

标签: c#

如何将两位或三位数字转换为单位数,例如:12 = 1 + 2 =单个数字为3或95 = 9 + 5 = 14 = 1 + 4 = C#中的单个数字5

7 个答案:

答案 0 :(得分:2)

是否做家庭作业,这是一种方法。

int number = 95;
// or while (number >= 10)
while (number.ToString().Length > 1) // Do while we got a number that's 10 or more.
{
    number = number.ToString() // Converts to string.
       .ToCharArray() // Splits it into an array of characters. (eg. one digit)
       .Select(x => (int)char.GetNumericValue(x)) // Converts that character into an int.
       .Sum(); // Calculate the sum.
}

Number的值为5

答案 1 :(得分:2)

递归解决方案:

var d = new Date();
var n = d.toLocaleDateString(); 

增强smoksnes回答!

答案 2 :(得分:1)

可能会解决您的问题。

int num = 12;
int sum = num;
int rem = 0;
bool isitFirstTime = true;
if (sum > 9)
{
    if(!isitFirstTime)
    {
        num = sum;
    }
    else
    {
        sum = 0;
    }
    while (num != 0)
    {
        rem = num % 10;
        num = num / 10;
        sum = sum + rem;
    }
    isitFirstTime = false;
}
Console.WriteLine(sum);

答案 3 :(得分:0)

这不是最好的解决方案(在获取值之前将字符串转换为字符串很奇怪,不应该用于生产),但我确信它有效)

public static int StringToNumber(string text)
{
   int value = 0;
   foreach(char c in text)
   {
     int temp;
     if (!int.TryParse(c.ToString(), out temp)) throw new InvalidArgumentException(nameof(text));
     value += temp;
     if (value > 9) value = value / 10 + value % 10;
   }
   return value;
}

答案 4 :(得分:0)

我希望这有效......

use Drupal\Core\Entity\EntityInterface;

function my_module_entity_operation_alter(array &$operations, EntityInterface $entity) {
    if (isset($operations['edit']['query'])) {
        unset($operations['edit']['query']['destination']);
    }
    return $operations;
}

您可以传递2,3,4 ...数字作为输入...

答案 5 :(得分:0)

在这样的情况下,

Recursion非常方便。 看看这个:

int SumOfDigits(int source)
{
    if (source < 100)
    {
        int temp = source / 10;
        int sum = (source - (temp * 10)) + temp ;
        if (sum < 10) return sum;
        else return SumOfDigits(sum);
    }
    else throw new System.InvalidOperationException("source number can not be bigger than 99");
}

使用时:

var result = SumOfDigits(47); //will be 2

答案 6 :(得分:0)

又一个答案。没有递归和LINQ。

auto