gpt4 book ai didi

c# - 基于变量的第 n 个字符未按预期工作

转载 作者:行者123 更新时间:2023-11-30 20:45:54 25 4
gpt4 key购买 nike

所以我有 pow - 一个包含数字的列表。我必须像这样检查其他数字:获取所有数字并将 pow 中与特定数字具有相同索引的数字相加。

因此,如果我检查数字 4552,我需要得到 pow[4]+pow[5]+pow[5]+pow[2]。因为我是菜鸟,所以我尝试将数字转换为 string,使用循环获取字符,然后转换回 int 以获取索引。因此,获取 4550 和 4559 之间的总和的代码如下:

        for (int i = 4550; i < 4560; i++)
{
int sum = 0;
for (int j = 0; j < i.ToString().Length; j++)
{
sum += pows[Convert.ToInt32(i.ToString()[j])]; //here is the error - index was out of range
//do something with sum (like store it in another list)
}
}

那有什么问题呢?

编辑:为避免混淆...pow 有 10 个元素,从索引 0-9 开始。

解决方案:我的代码的问题是我得到的是字符代码而不是数字本身,谢谢 Steve Lillis。虽然 Dmitry Bychenko 提供的解决方案比我的尝试要好得多。谢谢大家。

最佳答案

您要查找的内容类似于 digital root :

模数(C# 中的%)比转换为字符串更容易和更快:

public static int DigitalRootIndex(IList<int> list, int value) {
if (value < 0)
value = -value;

int result = 0;

// for value == 4552
// result == list[4] + list[5] + list[5] + list[2]
while (value > 0) {
int index = value % 10;
result += list[index];
value /= 10;
}

return result;
}

...

int test = DigitalRootIndex(pow, 4552);

关于c# - 基于变量的第 n 个字符未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27620921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com