2017-07-03 58 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]);