C# 循环继续特定的 Int

问题描述 投票:0回答:1

我有问题示例:

int A = 20; int B = 10, int C = 40, int D = 5;

如何使其循环编号从

A -> B -> C -> D ->
开始再从A开始循环?

我所知道的事情是这样的:

var arr1 = new[] { A, B, C, D };
Random rnd = new Random();
var Result = arr1[rnd.Next(arr1.Length)];

但是使用随机会使循环随机值有时会像

A -> A -> C -> A -> D

我想要的是像从

A -> B -> C -> D ->
那样逐步循环,然后再次从A开始。

我希望你能理解我的问题,因为我的英语很糟糕,抱歉,谢谢!

c# loops integer numbers
1个回答
1
投票

如果你想要 A、B、C、D、A...,你就不会有随机的东西

您只想确保在索引达到 3 时将其重置为 0(对于内部有 4 个项目的数组)

最简单的方法是使用模运算符

%
,它给出除法运算后剩下的余数:

for(int x = 0; x < 1000; x++){
    var y = x % arr1.Length;
    Console.WriteLine(arr1[y]);
}

您可以将 1000 设置为您实际想要循环的任意次数;在这种情况下,代码将在一个循环中打印 A、B、C、D 的值 250 次(1000 次循环打印四个项目之一意味着每个项目打印 250 次)

因为

%
是余数,它永远不会超过除数(被除的值)减一。在本例中,除数为 4,因此余数永远不会超过 3。这也是四项数组中可用的最大索引:

0%4 == 0
1%4 == 1
2%4 == 2
3%4 == 3
4%4 == 0 //we're back to the start
5%4 == 1

等等。记住任何正数,模

array.Length
都不会超出数组。这也意味着,因为它在 array.Length 之外工作,所以您不必担心数组中有多少项 - 可能是 10、一百万等,代码将自动调整以循环,无论数组有多大数组是

请小心负数,因为负数模的结果是负数(-10 % 4 是 -2)

© www.soinside.com 2019 - 2024. All rights reserved.