2014-01-06 44 views
-1

我有一個程序,應該從控制檯讀取一個整數值x,然後打印出一個多維。列j上的行i的值應該是i *j。例如:如果我輸入3,矩陣應該是這樣的:c中的矩陣數組#

1 2 3 

2 4 6 

3 6 9 

現在,我已經在我的主要功能這樣寫代碼:所以

 Console.WriteLine("Input a value: "); 
     int x = int.Parse(Console.ReadLine()); 

     int[,] arr = new int[x,x]; 

     for (int i = 0; i < x; i--) 
     { 
      for (int j = 0; j < x; j++) 
      { 
       arr[i, j] = arr[i, j] + arr[i, j]; 

       Console.Write(arr[i, j] + " ");   
      } 

     } 
     Console.ReadLine(); 

,當我輸入3從我的代碼,我得到的輸出:

0 0 0 

我在做什麼錯在這裏?

+1

'我 - '應該是'我'++通過 –

+2

其與調試步驟,而錯誤應該是顯而易見的。 – Servy

+0

我試過了,但後來我得到的輸出是:0 0 0 0 0 0 0 0 0在一行中 – user3163066

回答

2
  1. 您必須將i--更改爲i++

  2. Console.WriteLine()放在內圈for之後。它會在每個x數字後打印一個換行符,使其像矩陣一樣循環。

  3. 你說ij列中的值應該是i *j,但我看不到你的代碼中的任何i * j。將您的計算更改爲:arr[i, j] = i * j;

這應該是它,而是因爲你的循環運行從0x - 1和你想要的結果是,如果它是從1x你必須適應你的計算,並使其arr[i, j] = (i + 1) * (j + 1);

完整的代碼應該是:

Console.WriteLine("Input a value: "); 
int x = int.Parse(Console.ReadLine()); 

int[,] arr = new int[x, x]; 

for (int i = 0; i < x; i++) 
{ 
    for (int j = 0; j < x; j++) 
    { 
     arr[i, j] = (i + 1) * (j + 1); 

     Console.Write(arr[i, j] + " "); 
    } 

    Console.WriteLine(); 
} 
Console.ReadLine(); 
+0

非常感謝。這真的有幫助。 – user3163066

1

You're saing說的改編[I,J]必須是值等於我*∫,但you're沒有這樣做對你的代碼。

變化

arr[i, j] = arr[i, j] + arr[i, j]; 

arr[i, j] = (i+1) * (j+1); 

,你需要改變的另一件事是,我正在遞減的,因爲這個代碼在for循環:我 -。將其更改爲i ++

0

看看int [,]是如何充滿零的,你所做的就是加零+零。

好像你真正想要的是這樣的:

int[,] arr = new int[x,x]; 

    for (int i = 0; i < x; i++) 
    { 
     for (int j = 0; j < x; j++) 
     { 
      arr[i, j] = (i+1) * (j + 1); 

      Console.Write(arr[i, j] + " ");   
     } 
     Console.Write("\r\n"); 
    } 
    Console.ReadLine(); 
+0

這會產生與您想要的問題相同的輸出。 –