2017-07-03 3 views
0

こんにちは私は、各インデックスを2倍した配列を踏んでループしていました。しかし、インデックスを0に、次に1に、次に2に等しくなるように変更しました。(これは以下のコードではjです)jは予想通りに増加せず、9だけ増加します。誰も助けることができますか?ラインc#ループが予想通りにインクリメントしない

a[i] = i * j; 

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

「i」は0から9までの一連の乗算を行い、それぞれの結果を 'a [i]'に格納します。もちろん、a [i]は1つの値しか格納できません。 'i * 9' –

+1

' + = 'を使うのですか?デバッガのシングルステップ機能を使用する方法を学ぶと、各ステップで異なる値と格納されているものを確認できます。 –

+0

+ =?あなたがどこに言及しているのかわからない。今すぐデバッグを見てください。 – Eric

答えて

1

が、これはあなたが継続的にa[i]に配置された値を上書きしていること、jを使用して、ループのサイクル全体に同じ値のまま。あなたは、あなたが効果的に、配列の各インデックスでiの広場を格納している使用している新しいalgorithmnで

ので、これで十分でしょう:jに関するあなたのforループで

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

すべての値を格納する2次元配列を使用します。

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

その後

a[i,j] = i * j; 

a[i] = i * j; 

を交換し、値をリードバックするためにこれを使用:

for (int i = 0; i < 10; i++) 
    for (int j = 0; j < 10; j++) 
     Console.WriteLine(a[i,j]); 
関連する問題