C#嵌套for循环根据大括号创建意外结果

时间:2013-10-18 15:54:00

标签: c# for-loop nested

在使用C#创建嵌套for循环时,我似乎遇到了问题。当嵌套循环有大括号时,结果不是预期的结果,而使用大括号则结果符合预期。

代码:

int i, j, k;

for(i=1; i<=5;i++) // this loops 5 times. 
{
   for (j = 5; j > i; j--)
   {
      Console.Write(" ");
      Console.WriteLine("0");
   }
}

预期:

    0
   0
  0
 0
0

结果:

  0
  0
  0
  0
  0
  0
  0
  0
  0
  0
  0

我不明白为什么,如果我否定嵌套的括号,我会得到预期的答案,但我不确定为什么与它们不起作用。

4 个答案:

答案 0 :(得分:3)

你把大括号放在错误的地方,试试这个:

 int i, j, k;

 for(i=1; i<=5;i++) // this loops 5 times. 
 {
    for (j = 5; j > i; j--)
    {
        Console.Write(" ");
    }

    Console.WriteLine("0");
 }

如果你没有添加大括号,它是有效的,因为只有for语句下面的句子在循环中

 for(i=1; i<=5;i++) // loop A
 {
    for (j = 5; j > i; j--)  // loop B
        Console.Write(" ");  // in scope of loop B
    Console.WriteLine("0");  // in scope of loop A
 }

答案 1 :(得分:0)

从第一个循环中取出Console.WriteLine("0");

答案 2 :(得分:0)

因为Console.WriteLine(“0”);会给予回报。

试试这个

   for(i=1; i<=5;i++) // this loops 5 times. 
    {
        for (j = 5; j > i; j--)
        {
            Console.Write(" ");
        }
        Console.WriteLine("0");
    }

答案 3 :(得分:0)

这可以用更短的方式完成:

for(int i = 5; i > 0; --i)
    Console.WriteLine(new String(' ', i) + 0);