如何获取任何数字并获得1-3之间的数字

时间:2009-06-27 00:21:53

标签: math

我在数组中有三种颜色array('blue', 'red', 'green'),在我的循环中,我希望能够打印蓝色,红色,绿色,蓝色,红色,绿色。

我知道我可以每3个循环重置一个计数器,然后用它来找到我想要的颜色 - 1,2,3,重置,1,2,3,重置等等。但是有一个简单的方法传递当前循环计数,如5或7,得到2?或者通过6或9获得3?我错过了一些简单的数学解决方案吗?

7 个答案:

答案 0 :(得分:13)

你要找的是模运算符'%';

arrayIndex = loopCount % 3;

基本上这意味着将数字除以3并给出余数......所以它将等于0 1 2 0 1 2 0 1 2等等......

编辑:

如果您使用的语言在1处启动数组索引,则可以执行以下操作:

arrayIndex = loopCount % 3 + 1;

答案 1 :(得分:2)

你似乎在假设涉及数学。

while (true) {
    foreach (var color in colors) {
        Console.WriteLine(color);
    }
}

用C#编写,因为你没有说明你正在使用的语言或平台。

答案 2 :(得分:2)

你想要“mod”。

如果您将循环计数开始为零,则表示:

(loopCount%3)+ 1

答案 3 :(得分:2)

您可以计算将当前计数除以数组中元素总数的剩余部分(即使用mod函数),而不是重置计数器。

例如,

int i;
char *colors[] = {"red", "green", "blue"};

for (i = 0; i < 100; i++)
        printf("%s\n", colors[i % 3]);

答案 4 :(得分:1)

使用模运算,5 mod 3 = 2,6 mod 3 = 0,7 mod 3 = 1等...如果你的列表是1而不是0,则加1。

编辑:模运算符可能会有所不同,具体取决于您使用的语言。 Wikipedia列出了大部分内容。

答案 5 :(得分:1)

给定数组['blue','red','green'] 得到你想要的,做

array[number mod 3]

答案 6 :(得分:1)

这是一个有效的C#示例:

using System;

class Program
{
    static void Main()
    {
        int iterations = 5;

        String[] colors
            = new String[] { "blue", "red", "green" };

        for (int i = 0; i < colors.Length * iterations; i++)
        {
            Console.WriteLine(colors[i % colors.Length]);
        }
    }
}