如何将两位或三位数字转换为单位数,例如:12 = 1 + 2 =单个数字为3或95 = 9 + 5 = 14 = 1 + 4 = C#中的单个数字5
答案 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)
答案 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