我在数组中有三种颜色array('blue', 'red', 'green')
,在我的循环中,我希望能够打印蓝色,红色,绿色,蓝色,红色,绿色。
我知道我可以每3个循环重置一个计数器,然后用它来找到我想要的颜色 - 1,2,3,重置,1,2,3,重置等等。但是有一个简单的方法传递当前循环计数,如5或7,得到2?或者通过6或9获得3?我错过了一些简单的数学解决方案吗?
答案 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]);
}
}
}