【发布时间】:2015-02-04 18:51:48
【问题描述】:
我有以下方法可以打印出给定数组的所有连续子集。我希望能够将交织在 for 循环中的丑陋 print 语句分离出来并放入一个新函数中。这是可行的吗?
// Example:
// Input: char[] input = new char[] { 'a', 'b', 'c' };
// Output:
// (a) (a b) (a b c)
// (b) (b c)
// (c)
static void PrintContSubArrays(char[] arr)
{
int len = arr.Length;
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
for (int i = 0; i < len; i++)
{
for (int j = 1; j <= len; j++)
{
sb2.AppendFormat("(");
for (int k = i; k < j; k++)
{
sb2.AppendFormat("{0} ", arr[k]);
}
sb2.Remove(sb2.Length - 1, 1);
sb2.Append(") ");
if (sb2.Length > 3) sb1.Append(sb2);
sb2.Clear();
}
sb1.Append(System.Environment.NewLine);
}
Console.WriteLine(sb1.ToString());
Console.ReadLine();
}
【问题讨论】:
-
你能写出想要的结果吗,函数会做什么以及如何调用它?
-
你在说什么印刷品?字符串生成器追加?
-
@usr 是的,在当前的实现中,字符串生成器收集字符并在最后打印出来。我想取消 sb 声明。
-
@Andrei 结果应该和现在一样。我希望能够像函数当前那样调用函数并在控制台上打印结果,但不知何故,将字符从数组发送到另一个负责格式化和打印最终结果的函数。我不确定这是否可行——或者我是否有意义。如果这仍然不清楚,请告诉我。谢谢!
标签: c# for-loop code-separation