例如,我试图以下列方式打印输出:
盘:1 2 3 4 5
移动:1 3 7 15 31
我怎么能这样做,有人可以帮帮我吗?
{
class Program
{
static void Main(string[] args)
{
int n = 2;
for (int j = 1; j <= 5; j++)
Console.WriteLine("disk: {0}", j);
for (int i = 1; i <= 5; i++)
Console.WriteLine("moves: {2:N0}",
n, i,(long)Math.Pow(n, i) - 1);
}
}
}
答案 0 :(得分:2)
Console.WriteLine
每次都会写一个新行。如果您不想要这种行为,请使用Console.Write
。
Console.Write("Disk:");
for (int j = 1; j <= 5; j++)
Console.Write(" {0}", j);
Console.WriteLine();
Console.Write("Moves:");
for (int i = 1; i <= 5; i++)
Console.Write(" {2:N0}", (long)Math.Pow(n, i) - 1);
Console.WriteLine();
答案 1 :(得分:1)
使用string.PadLeft()
方法来证明您的文字。当然,您可以使用常量值替换幻数。这样您就可以不必计算空格,并自动添加适量的空格以使字符串达到所需的长度。
请注意,您也可以摆脱格式插入(即不再有花括号)。
static void Main(string[] args)
{
int power = 2;
Console.Write("disk:".PadLeft(8));
for (int j = 1; j <= 5; j++)
Console.Write(j.ToString().PadLeft(5));
Console.WriteLine();
Console.Write("moves:".PadLeft(8));
for (int i = 1; i <= 5; i++)
Console.Write(((long)Math.Pow(power, i) - 1).ToString().PadLeft(5));
Console.WriteLine();
Console.ReadLine();
}
结果如下:
答案 2 :(得分:0)
您可以使用Console.Write
,它不会打印回车。
但是在这种情况下你不需要for循环。只需使用Enumerable.Range
var n = 2;
var disks = Enumerable.Range(1, 5).ToList();
var moves = Enumerable.Range(1, 5).Select(i => (long) Math.Pow(n, i) - 1);
Console.WriteLine("disk: {0}", string.Join(" ", disks));
Console.WriteLine("moves: {0:N0}", string.Join(" ", moves));
结果:
disk: 1 2 3 4 5 moves: 1 3 7 15 31