2017-03-02 2 views
0
for (i=0; i<=9; i++) 
       for (j=0; j<=9; j++) 
        if (A[i][j]!=0) { 
        B[i] = A[i][j]; 
      } 
      System.out.print("Vector : "); 
      for(int i1 = 0; i1 < B.length; i1++){ 
        System.out.print(B[i1] + " "); 
      } array = true; 
      System.out.println(); 

私は0と異なっている55の値で10×10の配列を持っていると私は、これらの55個の番号1つのベクターから行う必要があります。 問題は、このコードでは、0でない数字と他の45のゼロだけが10個しか印刷されないということです。それは10行目からすべての値をとります。 私はB [i]に何か問題があると思いますが、わかりません。多分誰かが助けることができますか?2次元配列からのJava生成ベクトル。

+1

あなたは繰り返し内側のループでB [i]は番目の位置を再割り当てしています。 Bの現在のインデックスを追跡するには、別の変数が必要です。 – Chris

答えて

1

Bは、たとえばkのインデックスを使用する必要があるため、問題はB[i] = A[i][j];から発生します。索引iを10回使用することができます。

私は同じiがあなたのケースでオーバーライドにつれてあなたはおそらく、ベクトルの異なるカウンタを持っている必要がありB[k++] = A[i][j];

0

を示唆しています。

for (int i=0, ctr=0; i<=9; i++) 
    for (j=0; j<=9; j++) 
     if (A[i][j]!=0) { 
      B[ctr++] = A[i][j]; 
     } 
System.out.print("Vector : "); 
for(int i1 = 0; i1 < B.length; i1++){ 
    System.out.print(B[i1] + " "); 
} array = true; 
System.out.println(); 
1
int index = 0 ; 
for (i=0; i<=9; i++) 
       for (j=0; j<=9; j++) 
        if (A[i][j]!=0) { 
        B[index] = A[i][j]; 
        index++; 
      } 
      System.out.print("Vector : "); 
      for(int i1 = 0; i1 < B.length; i1++){ 
        System.out.print(B[i1] + " "); 
      } array = true; 
      System.out.println();