如何在C#数组中进行重复的不同计算

时间:2020-02-10 04:27:44

标签: c#

我想从用户文本框中获取数字。该值没有限制。对于每个数字的字符,我将首先重复乘以2、4和6,然后将其加在一起。

例如,如果用户输入“ 12”,则1 * 2 + 2 * 4 =10。如果用户输入“ 1111”,则答案将按以下方式计算:1 * 2 + 1 * 4 + 1 * 6 + 1 * 2 =12。首先,我将数字设置在数组中,但是接下来我将坚持每次每次在for循环中调用no时,如何使其乘以不同的值(2、4和6)。

是否可以在C#中实现?有什么我可以学习的例子吗?

enter image description here

2 个答案:

答案 0 :(得分:3)

//int[] numDigitsArray // 1, 2 ,3 ,4

int[] twoFourSixArray = {2, 4, 6};
int current = 0;
int res = 0;
while (current < numDigitsArray.Length)  
{
    res += twoFourSixArray[current % twoFourSixArray.Length] * numDigistsArray[current];
    current++;
}

答案 1 :(得分:3)

或者如果您有循环 OCD ,这是一个 Linq 解决方案

var result = input.Select((c, i) => array[i % array.Length] * (c - '0')).Sum();

Demo Here

前提是

  1. input是您的字符串
  2. array是您的电话号码
  3. Select每个char,并在字符串(c,i)中索引
  4. i % array.Length的每个元素除以i % length后得到的余数将循环遍历您的数组
  5. intchar获取(c - '0')的值(请考虑 ascii表
  6. *一起
  7. Sum结果

其他资源

Select(IEnumerable, Func)

通过合并将序列的每个元素投影为新形式 元素的索引。

Remainder operator %

余数运算符%将其除后的余数 左操作数乘以右操作数。

更新

但是,我想知道输入是否也是数组(例如{11,12} 在这种情况下,它们的计算方式如下:11 * 2 + 12 * 4 = 70)

var input = "34 5 234 54";

var result = input.Split(' ')
                  .Select((c, i) => array[i % array.Length] * int.Parse(x))
                  .Sum();
相关问题