私はJavaを初めて使用しますが、配列内でオブジェクトを移動するのに問題があります。問題は次のとおりです。にX
オブジェクトがm[i][j]
あり、にYオブジェクトがあるとしm[i][j+1]
ます。私が欲しいのは、に移動X
し、その位置にm[i][j+1]
表示してから、に移動して、オブジェクトを元の位置に戻すことです。何か案は?X
m[i][j+2]
Y
編集:
- ステップ1はこれを示す必要があります:XY _
- ステップ2:_ X _
- ステップ3:_ YX
2つのレイヤーを効果的に扱っているように聞こえます...単純な配列操作だけではありません。同じスペースで X が Y の前にある状態を説明しています。
たくさんの選択肢があります。X の配列と Y の配列を持つことができます。要素をループするときに、X が存在するかどうかをテストしてから出力し、存在しない場合は Y 配列にあるものをすべて出力します。X が 1 文字のみの場合、1 つの整数変数で表すこともできます。配列は Y またはアンダースコアのみを保持していると考えてください。ただし、その要素をループしているため、X 番目の要素にいる場合は、Y 配列の要素の代わりに「X」を出力します。
final Object underScoreObjectWhateverThatIs = null;
final Object o1 = new Integer(1);
final Object o2 = new Integer(2);
final Object o3 = new Integer(3);
final Object o4 = new Integer(4);
final Object[][] m = new Object[][]{new Object[]{null, o1}, new Object[]{o1, o2, o3, o4}};
final int i = 1;
final int j = 1;
//Test vars set up
//Going for step 1;
m[i][j + 2] = underScoreObjectWhateverThatIs;
//We now have step one
Object X = m[i][j];
Object Y = m[i][j + 1];
m[i][j] = underScoreObjectWhateverThatIs;
m[i][j + 1] = X;
//We now have step 2
m[i][j + 1] = Y;
m[i][j + 2] = X;
//We now have step 3
// (X was o2, and Y was o3 here if that is unclear)
それはあなたが説明していることの私の最良の解釈です。これは Java コードですが、ここで悪い考えが行われていると叫びます。何らかの理由で Object 配列の配列がありますが、その理由があまり良くない場合は、何らかのクラスを作成するか、Lists/Collections などを使用することをおそらく再検討する必要があります。あなたは本当に何をしようとしていますか?なぜ私たちは配列をいじっているのでしょうか?