gpt4 book ai didi

c# - 数组何时出错?

转载 作者:太空宇宙 更新时间:2023-11-03 19:03:44 27 4
gpt4 key购买 nike

我正在尝试通过解决数学问题来学习 C#。例如,我正在研究前 1000 个正数中 3 或 5 的因式总和。我已经布置了代码的基本外壳,但它的行为并不像我期望的那样。

现在,我得到的不是单一输出 23,而是 1,1,3,3,5,5,7,7,9,9。我想我以某种方式搞砸了截断函数。这真是一团糟,但这是我能想到的检查因素的唯一方法。其次,我认为输出是在循环期间写入的,而不是耐心地等待 for() 循环完成。

using System;

namespace Problem1
{
class Problem1
{
public static void Main()
{
//create a 1000 number array
int[] numberPool = new int[10];

//use for loop to assign the first 1000 positive numbers to the array
for (int i = 0; i < numberPool.Length; i++)
{
numberPool[i] = i + 1;
}

//check for factors of 3 or 5 using if/then statment
foreach (int i in numberPool)
if ((i / 3) == Math.Truncate((((decimal)(i / 3)))) || ((i / 5) == Math.Truncate(((decimal)(i / 5)))))
{
numberPool[i] = i;
}
else
{
numberPool[i] = 0;
}

//throw the 0s and factors together and get the sum!
int sum = 0;

for (int x = 0;x < numberPool.Length;x++)
{
sum = sum + numberPool[x];
}

Console.WriteLine(sum);

Console.ReadLine();
//uncomment above if running in vbs
}
}
}

最佳答案

foreach 循环有一些错误。

如果您想修改正在循环的数组,请使用 for 循环。此外,在检查余数时使用模数。

    for (int i = 0; i < numberPool.Length; i++)
{
if (numberPool[i] % 3 == 0 || numberPool[i] % 5 == 0)
{
// Do nothing
}
else
{
numberPool[i] = 0;
}
}

模数 (%) 将给出两个整数相除时的余数。

另一个有用的快捷方式,variable = variable + x 可以替换为 variable += x

请注意,有更简洁的方法可以做到这一点,但由于您正在学习这门语言,我会把它留给您去寻找。

关于c# - 数组何时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31979637/

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