gpt4 book ai didi

c# - 在 Armstrong 中为 List 或 Array 赋值时遇到问题 No

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:35 26 4
gpt4 key购买 nike

class Program
{
static void Main(string[] args)
{
int temp;
int arm, j = 0;
List<int> armstrongnos = new List<int>();
for (int i = 1; i < 1000; i++)
{
arm= 0;
temp = i;
while (i > 0)
{
arm += (i % 10) * (i % 10) * (i % 10);
i /= 10;
}
if (arm== temp)
{
armstrongnos.Add(temp);// OutOfMemory Exception occurs whether you use array or list.
}
}
foreach (var item in armstrongnos)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}

我正在尝试打印 armstrong no.s b/w 1 到 1000。在上面的代码中确认它是 armstrong no.我将这些值分配给数组或列表。但是在这两种情况下我都有 outofMemory Exception。无法理解为什么会出现这个问题。请帮助解决问题。我在本准则中做错了什么。请解释。

最佳答案

您正在运行一个无限循环。您循环的停止条件是 i < 1000 ,但是i总是小于1000因为你在循环中减少它,并且 while (i > 0) ,但是 i总是大于0 .无限运行,您的代码最终会遇到 OutOfMemory 异常。

如果你想玩变量值,永远不要用循环的i来做迭代器 - 用 temp 来做.

for (int i = 1; i < 1000; i++)
{
arm = 0;
temp = i;

while(temp > 0)
{
arm += (temp % 10) * (temp % 10) * (temp % 10);
temp /= 10;
}
if (arm == i)
armstrongnos.Add(i);
}
foreach (var item in armstrongnos)
Console.WriteLine(item);

Console.ReadLine();

关于c# - 在 Armstrong 中为 List 或 Array 赋值时遇到问题 No,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45547244/

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