c# -嵌套循环

本文关键字:嵌套循环 | 更新日期: 2023-09-27 18:07:37

我正在做一个简单的c#练习。问题是我想显示如下输出:

输出


样本1 => a

样本2 => b

样本1 => c

样本2 => d

样本1 => e

样本2 => f

输入1:

Sample 1 => 
Sample 2 => 

输入2:

a
b
c
d
e
f

这是我的代码

foreach (string input1 in RichTextBox1.Lines)
{
    foreach (string input2 in RichTextBox2.Lines)
    {
        RichTextBox3.Text += input1 + input2 + Environment.NewLine;
    }
}

但是它不工作,有人能帮助我吗?谢谢你. .

c# -嵌套循环

您可以尝试使用模(%),并使用RichTextBox2。行作为外循环。

for (int i=0; i<RichTextBox2.Lines.Length; i++)
{
    var length = RichTextBox1.Lines.Length;
    RichTextBox3.Text += RichTextBox1.Lines[(i%length)] + RichTextBox2.Lines[i] + Environment.NewLine;
}

看起来很复杂,但是模数给你你想要的,即使有一个样本3,样本4,等等

需要对应两个序列的元素。因此,您可以使用LINQ的Zip方法轻松实现这样的结果(同样,通过使用String.Join方法,我们不使用任何循环):

richTextBox3.Text = String.Join(Environment.NewLine, 
                    Enumerable.Repeat(richTextBox1.Lines, richTextBox2.Lines.Count())
                    .SelectMany(c => c).Zip(richTextBox2.Lines, (f, s) => f + " => " + s));

下面的代码将为您提供预期的输出:

int i = 0;
foreach (var input2 in RichTextBox2.Lines)
{
    string input1 = RichTextBox1.Lines[i % RichTextBox1.Lines.Length];
    RichTextBox3.Text += input1 + input2 + Environment.NewLine;
    i++;
}

你的问题是你正在循环你的第二个输入…对于每个第一次输入!一遍又一遍。

所以:这里只需要一个循环。下面是一些用于开始的伪代码:

... first check that both line counts are equal
for (int i=0; i<linecount; i++) {
    RichTextBox3.Text += input1[i] + input2[i] + Environment.NewLine
}

其中input1[i]基本上转化为:你必须把你的两个初始框的内容推到一个数组中,例如