我有这个代码从数组中输出一些值,加上值-
下新行中的a[i]
Console.Write(a[i] + "\n-");
所以看起来像这样
a
-
现在我有更多的Console.Write(a[i+1] + "\n-");
代码,它输出就像这样
a
-b
-c
-d
-
我知道为什么会出现这种情况但是如何在每个新行\n
之后返回一行?所以我可以得到这个
abcd
----
答案 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));
答案 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