我想从用户文本框中获取数字。该值没有限制。对于每个数字的字符,我将首先重复乘以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#中实现?有什么我可以学习的例子吗?
答案 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();
前提是
input
是您的字符串array
是您的电话号码Select
每个char
,并在字符串(c,i)
中索引i % array.Length
的每个元素除以i % length
后得到的余数将循环遍历您的数组int
,char
获取(c - '0')
的值(请考虑 ascii表)*
一起Sum
结果其他资源
通过合并将序列的每个元素投影为新形式 元素的索引。
余数运算符%将其除后的余数 左操作数乘以右操作数。
更新
但是,我想知道输入是否也是数组(例如{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();