2017-07-03 73 views
0

嗨我有一个循环,逐步通过数组,每个索引乘以2。然而,我改变了它,索引乘以0,然后是1,然后是2,直到碰到10(这是下面的代码中的j),j不是按预期递增,只是乘以9。谁能帮忙? TKSc#循环不按预期递增

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); 
     } 
    } 
    } 
} 
+4

你正在做一系列'i'乘以0到9并将每个结果存储在'a [i]'当然'a [i]'只能存储一个值:最后一个,即'我* 9' –

+1

你的意思是使用'+ ='吗?学习使用调试器的单步功能可能会有所帮助,因此您可以看到每个步骤中存储的不同值和内容。 –

+0

+ =?林不知道你指的是哪里。现在调查调试。 – Eric

回答

1

随着线

a[i] = i * j; 

i仍然使用j循环的整个周期相同的值,这意味着你被连续覆盖放置在a[i]值。

与正在使用,您可以有效存储i阵列的每个指标在广场新algorithmn,所以这将是足够的:在你的for循环对于j

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

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); 
     } 
    } 
    } 
} 
+0

感谢你们,在我继续讨论之前,我把它分解成“存储”部分! – Eric

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]);