c#循环未按预期递增

时间:2017-07-03 23:09:13

标签: c# arrays loops

嗨我有一个循环,正在逐步通过一个数组,每个索引乘以2。但是我改变了它,使得索引乘以0,然后是1,然后是2等,直到它达到10.(在下面的代码中这是j)j没有按预期递增,只是乘以9。有人可以帮忙吗? TKS

using System;

namespace ArrayandStringPractice
{
  class MainClass
  {
    public static void Main(string[] args)
    {
      int[] a = new int[10];

      for (int i = 0; i < 10; i++)
        for (int j = 0; j < 10; j++)
        {
          {
            a[i] = i * j;
            //Console.WriteLine(a[i]);
          }
        }

      foreach (int i in a)
      {
        Console.WriteLine(i);
      }
    }
  }
}

3 个答案:

答案 0 :(得分:1)

使用

a[i] = i * j;
使用i

j与循环的整个循环保持相同的值,这意味着您将不断覆盖a[i]中的值。

使用你正在使用的新算法,你有效地将i的平方存储在数组的每个索引处,所以这就足够了:

for (int i = 0; i < 10; i++)
    a[i] = i * i;

答案 1 :(得分:0)

在你的for循环中用于j

a [i] = i * j;

以上代码行将始终用j的最后一个值9覆盖 所以,你会得到的 i = 1..9,多个固定j = 9。

using System;

namespace ArrayandStringPractice
{
  class MainClass
  {
    public static void Main(string[] args)
    {
      int[] a = new int[10];

      for (int i = 0; i < 10; i++)
        for (int j = 0; j < 10; j++)
        {
          {
            a[i] = i * j;
            //Console.WriteLine(a[i]);
          }
        }

      foreach (int i in a)
      {
        Console.WriteLine(i);
      }
    }
  }
}

答案 2 :(得分:0)

使用二维数组存储所有值:

int[,] a = new int[10,10];

然后替换

a[i] = i * j;

a[i,j] = i * j;

并使用它来读取值:

for (int i = 0; i < 10; i++)
    for (int j = 0; j < 10; j++)
        Console.WriteLine(a[i,j]);