如何跳过数组中的每个第3个元素?

时间:2014-10-08 09:44:46

标签: c# arrays for-loop foreach

我正在尝试编写一个简单的逻辑。基于这个逻辑,我应该在项目中实现我的实际逻辑。

到目前为止,我已尝试过以下代码。

int[] num = new int[11];

for (int i = 1; i < 6; i++)
{
    num[2 * (i - 1) + 1] = i;
}

foreach (var item in num)
{
    Console.Write(item + " ");
}

输出为 - 0 1 0 2 0 3 0 4 0 5 0

但我希望输出为0 1 2 3 0 4 5 6 0 7 8 9 0格式。

在此代码中应该写什么 - num[2 * (i - 1) + 1]

3 个答案:

答案 0 :(得分:2)

要获得所需的回报,请尝试以下方法:

var num = new int[12];
for (int i = 1; i < 10; i++) {
    num[i + ((i - 1) / 3)] = i;
}

这会产生:0 1 2 3 0 4 5 6 0 7 8 9

它背后的逻辑是你需要为每组3的计算索引添加额外的1。- 1是将三人组移动到所需的位置。

更新

要删除前0,您必须从计算的索引中减去1。

var num = new int[11];
for (int i = 1; i < 10; i++) {
    num[i - 1 + ((i - 1) / 3)] = i;
}

这会产生:1 2 3 0 4 5 6 0 7 8 9

答案 1 :(得分:0)

我并不完全遵循跳过每个第3个元素将如何产生你提到的结果。但是你需要找到一种方法来识别每个&#34;第三元素&#34;通过查看索引;这通常是使用MOD运算符(%进行C#,检查互联网&#34;模运算&#34;)然后检查结果,index % 2 == 0true每个偶数值index或&#34;每第二个值&#34;如果指数值是连续的。

其他应该很容易理解我猜。

答案 2 :(得分:0)

        int[] num = new int[11];
        int j = 0;
        for (int i = 1; i < 10; i++)
        {

            if (i%4 != 0)
            {
                num[i] = i - j;
            }
            else
            {
                j= j + 1;
            }

        }

        foreach (var item in num)
        {
            Console.Write(item + " ");
        }
        Console.Read();