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;
}
}
但是它不工作,有人能帮助我吗?谢谢你. .
您可以尝试使用模(%),并使用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]
基本上转化为:你必须把你的两个初始框的内容推到一个数组中,例如