C# - 嵌套循环
C# - Nested Loop
我正在做一个简单的 C# 练习。问题是我想显示如下输出:
输出
Sample 1 => a
Sample 2 => b
Sample 1 => c
Sample 2 => d
Sample 1 => e
Sample 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;
}
}
但是它不起作用。任何人都可以帮助我。谢谢..
你的问题是你正在循环你的第二个输入......对于每个第一个输入!一次又一次,一次又一次。
所以:你只需要一个循环。这是一些入门的伪代码:
... 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]
基本上转化为:例如,您必须将两个初始框的内容推送到一个数组中。
您需要两个序列的对应元素。所以你可以使用 LINQ 的 Zip
method easily to achieve this result like this (Also by using 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++;
}
你可以试试取模(%),用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 等等,模数也能满足您的需求。
我正在做一个简单的 C# 练习。问题是我想显示如下输出:
输出
Sample 1 => a
Sample 2 => b
Sample 1 => c
Sample 2 => d
Sample 1 => e
Sample 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;
}
}
但是它不起作用。任何人都可以帮助我。谢谢..
你的问题是你正在循环你的第二个输入......对于每个第一个输入!一次又一次,一次又一次。
所以:你只需要一个循环。这是一些入门的伪代码:
... 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]
基本上转化为:例如,您必须将两个初始框的内容推送到一个数组中。
您需要两个序列的对应元素。所以你可以使用 LINQ 的 Zip
method easily to achieve this result like this (Also by using 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++;
}
你可以试试取模(%),用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 等等,模数也能满足您的需求。