2016-05-09 9 views
1

ここに私の状況はあります:answerChoices[][]の配列があり、answerChoices[][]の値に基づいて2つの新しい配列を作成しています。最初のfinalAnswerChoices1[][]は、ランダム配列の値がnull

System.arraycopy(answerChoices, 0, finalAnswerChoices1, 0, finalAnswerChoices1.length);のように作成され、動作は予期されたとおりです。しかし、私の二番目の配列のために私はanswerChoices[][]から特定の要素を必要とし、私はこのように、最終的な配列を作成します。

for (int x = 0; x < widebodies.length; x++) { 
    for (int y = 0; y < 6; y++) { 
      finalAnswerChoices2[x][y] = answerChoices[widebodies[x]][y]; 
      } 
    } 

widebodiesは、整数の配列です。

私の問題はこれです.2番目の方法を使用してfinalAnswerChoices2[][]を作成すると、内部の値の一部がnullになります。最大の問題は、私には時間の100%を繰り返すことができないということです。なぜなら、私には値がヌルで、いずれかがヌルであれば「ランダム」に見えるからです。場合によってはヌル値が存在せず、その他の場合には「ランダム」ヌル値があります。 arraycopyを使用する最初の方法は何の問題も生じません。

何がこの奇妙な動作を引き起こす可能性がありますか?私はansquerChoices[][]は、(例えば)2×3とwidebodies[]であれば持っている、と思い

+1

あなたは 'answerChoices [] []'の中から特定の要素だけが必要だと言いました。つまり、新しい配列はすべての要素を持たず、サイズが同じであればいくつかのnull値があります。 – DCruz22

+0

混乱して申し訳ありませんが、私はそれが 'answerChoices [row] [column]'であると言っていました。新しい配列の特定の行とその行のすべての列が必要です。私の経験は、行全体がnullであるということです。 – ez4nick

答えて

1

finalAnswerChoices2.lengthwidebodies.lengthと異なるか、finalAnswerChoices2[0].length6とは異なる問題があるようです。したがって、finalAnswerChoices2配列には、ループの到達しない位置に配列初期化の値(デフォルト)の0が含まれます。

+0

ありがとう、あなたのコメントで私は自分のエラーを見つけることができました。今それは私には意味がある。 – ez4nick

0

は、例えば、整数10は、answerChoices[10][y]をアセスしようとすると、例外だろう...しかし、その代わり、それはnullを返します。 これは、挨拶の問題に役立つことを願っています。

+0

これはそうではありません。アクセスしようとした値が決して 'answerChoices [] []'の長さの外にはありません。 – ez4nick