控制台两行输出

时间:2017-03-29 11:53:45

标签: c# console output

我有这个代码从数组中输出一些值,加上值-下新行中的a[i]

Console.Write(a[i] + "\n-");

所以看起来像这样

a
-

现在我有更多的Console.Write(a[i+1] + "\n-");代码,它输出就像这样

a
-b
-c
-d
-

我知道为什么会出现这种情况但是如何在每个新行\n之后返回一行?所以我可以得到这个

abcd
----

6 个答案:

答案 0 :(得分:7)

您必须先输出值,然后输出破折号:

Console.WriteLine(string.Join("", a)); // make a string of all values and write a line end
Console.WriteLine(string.Join("", a.Select(v => "-"))); // write the dashes

[Ideone]

答案 1 :(得分:2)

使用Concat的另一种方法:

char[] a = {'a','b','c','d'};
Console.WriteLine(string.Concat(a));
Console.WriteLine(new string('-',a.Length));

https://dotnetfiddle.net/IZdlX5

答案 2 :(得分:1)

他们有两种方式 第一种方法如上所述。一般的想法是单独打印两条线,并以非常简单的方式为您提供与您想要的完全相同的结果。
第二种方法是使用当前位置下的SetCursorPosition(int Left,int Top)和Write('_')设置cusor位置,然后再将cusor移回。

答案 3 :(得分:0)

你不“走一条线”。输出第一行然后输出第二行。首先,您输出整个a数组,然后输出一行连字符,表示该数组的长度。也许是这样的:

Console.WriteLine(string.Join("", a));
Console.WriteLine(string.Join("", a.Select(_ => "-")));

第一行将a数组的所有元素连接成一个字符串,第二行使用LINQ的一种技巧来“查询”a数组但返回连字符而不是来自该数组的任何内容,然后以相同的方式输出。

答案 4 :(得分:0)

Linq的一个班轮:

Console.Write(String.Concat(a) + "\n" + new String('-', a.Length));

答案 5 :(得分:0)

您要找的是Console.SetCursorPosition

var baseLine = Console.CursorTop;
char[] a = {'a', 'b', 'c', 'd'};
char[] b = {'A', 'B', 'C', 'D'};
string[] conditions = {"a", "a", "both", "b"}; // Which arrays to show
for (int i = 0; i < a.Length; i++)
{
    Console.SetCursorPosition(i, baseLine);
    Console.Write(conditions[i] != "b" ? a[i] : '-');
    Console.SetCursorPosition(i, baseLine + 1);
    Console.Write(conditions[i] != "a" ? b[i] : '-');
}

baseLine是必需的,因为你不知道你将在哪一行开始。

输出:

abc-
--CD