[英]C# - Nested Loop
我正在做一个简单的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;
}
}
但这没有用。任何人都可以帮我。 谢谢..
您需要两个序列的对应元素。 因此,您可以轻松地使用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));
您可以尝试使用模(%),并将RichTextBox2.Lines用作外部循环。
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;
}
看起来很复杂,但是即使有Sample 3,Sample 4等,模也可以为您提供所需的内容。
这是可以为您提供预期输出的代码:
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]
基本上转换为:例如,您必须将两个初始框的内容推入数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.