C# 穿过两个不均匀的环

C# 穿过两个不均匀的环,c#,algorithm,loops,C#,Algorithm,Loops,假设我有两个数组,如下所示: string[] months = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; string[]

假设我有两个数组,如下所示:

string[] months = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
string[] names = { "Alice", "Brain", "Charlie", "David", "Elisa", "Francis", "Gordon", "Haley", "Isaac", "Jeniffer", "Kirkland", "Laura", "Michael", "Nora", "Oscar", "Pam" };
        for(int j = 0; j < 12; j++)
        {
            for (int k = 0; k < 16; k++)
            {
                Console.WriteLine(months[j] + " = " + names[k]);
            }
        }
Jan=Alice
Feb=Brain
Mar=Charlie
Apr=David
May=Elisa
Jun=Francis
Jul=Gordon
Aug=Haley
Sep=Isaac
Oct=Jeniffer
Nov=Kirkland
Dec=Laura
Jan=Micheal <-- Months Starts Again
Feb=Nora
Mar=Oscar
Apr=Pam
May=Alice <-- Names Starts Again
Jun=Biran
...
我为循环创建了两个名称,循环在外部,循环在内部。它不起作用。 我的代码是这样的:

string[] months = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
string[] names = { "Alice", "Brain", "Charlie", "David", "Elisa", "Francis", "Gordon", "Haley", "Isaac", "Jeniffer", "Kirkland", "Laura", "Michael", "Nora", "Oscar", "Pam" };
        for(int j = 0; j < 12; j++)
        {
            for (int k = 0; k < 16; k++)
            {
                Console.WriteLine(months[j] + " = " + names[k]);
            }
        }
Jan=Alice
Feb=Brain
Mar=Charlie
Apr=David
May=Elisa
Jun=Francis
Jul=Gordon
Aug=Haley
Sep=Isaac
Oct=Jeniffer
Nov=Kirkland
Dec=Laura
Jan=Micheal <-- Months Starts Again
Feb=Nora
Mar=Oscar
Apr=Pam
May=Alice <-- Names Starts Again
Jun=Biran
...
for(int j=0;j<12;j++)
{
对于(int k=0;k<16;k++)
{
Console.WriteLine(月[j]+“=”+名称[k]);
}
}
我想要获得如下输出:

string[] months = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
string[] names = { "Alice", "Brain", "Charlie", "David", "Elisa", "Francis", "Gordon", "Haley", "Isaac", "Jeniffer", "Kirkland", "Laura", "Michael", "Nora", "Oscar", "Pam" };
        for(int j = 0; j < 12; j++)
        {
            for (int k = 0; k < 16; k++)
            {
                Console.WriteLine(months[j] + " = " + names[k]);
            }
        }
Jan=Alice
Feb=Brain
Mar=Charlie
Apr=David
May=Elisa
Jun=Francis
Jul=Gordon
Aug=Haley
Sep=Isaac
Oct=Jeniffer
Nov=Kirkland
Dec=Laura
Jan=Micheal <-- Months Starts Again
Feb=Nora
Mar=Oscar
Apr=Pam
May=Alice <-- Names Starts Again
Jun=Biran
...
Jan=Alice
二月=大脑
玛丽=查理
Apr=大卫
May=Elisa
六月=弗朗西斯
七月=戈登
八月=哈利
Sep=艾萨克
Oct=杰尼弗
十一月=科克兰
十二月=劳拉

Jan=Micheal首先,您只需要一个循环。无论您需要多长时间,此循环都将继续。从你的问题中不太清楚每个名字需要出现多少次。假设总长度为12*16(月长乘以名称长)

循环遍历索引“i”从0到12*16的所有名称。 打印相关月份和名称时,请使用:

monthIndex = i mod 12
nameIndex = i mod 16
这将为您提供下一个月值和下一个名称值。

尝试以下操作:

const int itemsToDisplay = 20;
for (int i = 0; i < itemsToDisplay; ++i)
{
    Console.WriteLine(months[i % months.Length] + " = " + names[i % names.Length]);
}
const int itemsToDisplay=20;
对于(int i=0;i
不是一个很好的解决方案,但它应该是明确的;对每个数组进行计数,打印字符串,最后重置计数,继续

        string[] names = { "Alice", "Brain", "Charlie", "David", "Elisa", "Francis", "Gordon", "Haley", "Isaac", "Jeniffer", "Kirkland", "Laura", "Michael", "Nora", "Oscar", "Pam" };
        string[] months = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
        
        int monthCount = 0;
        int nameCount = 0;
        int loopCount = 0;
        while (loopCount < 20)
        {
            loopCount++;
            Console.WriteLine(months[monthCount] + "="+names[nameCount].ToString());
        
            if(monthCount < months.Length-1)
                monthCount++;
            else
                monthCount = 0;
            if(nameCount < names.Length-1)
                nameCount++;
            else
                nameCount = 0;
        }
string[]name={“爱丽丝”、“布莱恩”、“查理”、“大卫”、“伊莉莎”、“弗朗西斯”、“戈登”、“哈利”、“艾萨克”、“杰尼弗”、“柯克兰”、“劳拉”、“迈克尔”、“诺拉”、“奥斯卡”、“帕姆”};
字符串[]个月={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”};
int monthCount=0;
int namecont=0;
int loopCount=0;
while(loopCount<20)
{
loopCount++;
Console.WriteLine(月[monthCount]+“=”+名称[nameCount].ToString());
if(月数<月长-1)
monthCount++;
其他的
monthCount=0;
如果(名称计数
使用系统;
字符串[]个月={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”};
字符串[]名称={“爱丽丝”、“布莱恩”、“查理”、“大卫”、“伊莉莎”、“弗朗西斯”、“戈登”、“哈利”、“艾萨克”、“杰尼弗”、“柯克兰”、“劳拉”、“迈克尔”、“诺拉”、“奥斯卡”、“帕姆”};
对于(int j=0;j<24;j++)
{
var monthIndex=j%月长;
var nameIndex=j%names.Length;
WriteLine($“{months[monthIndex]}={names[nameIndex]}”);
}

什么是“它不起作用”呢?你确定在这里使用两个索引是个好主意吗?伊万,你说得对-这里一个索引就足够了。更正。