7

私はJavaにかなり慣れていませんが、それに入っています。ただし、ここで見つけたこの例が機能しない理由について頭を悩ませることはできません。

クラスの開始時:

String[][] spritesPaint = new String[20][20];

メソッド内:

for (int funct1 = 0; funct1 <= 2; funct1++) {
    if (funct1 == 0) {
        for (int funct2 = 0; funct2 < rEnemyNumber; funct2++) {
            spritesPaint[0][funct2] = new Integer(rEnemyY[funct2])
                    .toString();
            spritesPaint[1][funct2] = rEnemyGraphic[funct2];
        }
    } else if (funct1 == 1) {
        Arrays.sort(Integer.valueOf(spritesPaint[0].toString()),
                new Comparator<Integer[]>() {
                    @Override
                    public int compare(final Integer[] entry1,
                            final Integer[] entry2) {
                        final Integer time1 = entry1[0];
                        final Integer time2 = entry2[0];
                        return time1.compareTo(time2);
                    }
                });

    } else if (funct1 == 2) {
        for (int funct3 = 0; funct3 < rEnemyNumber; funct3++) {
            if (rEnemyCheck[funct3] == true) {
                nextPaint = getImage(base, rEnemyGraphic[funct3]);
                System.out.println("Next: " + nextPaint);

                g.drawImage(nextPaint, rEnemyX[funct3] + worldCenterX,
                        rEnemyY[funct3] + worldCenterY, this);
            }
        }
    }
}

基本的に、私がやりたいことは、画面上のオブジェクトの Y 位置とそのオブジェクトに関連する画像パスを格​​納する 2 次元配列を持ち、それを Y 位置の整数で並べ替えることです。これにより、アイソメトリック パースペクティブの正しい順序で要素を画面にペイントできるようになります。

ただし、次のエラーが発生し続けます。

The method sort(T[], Comparator<? super T>) in the type Arrays 
is not applicable for the arguments (Integer, new Comparator<Integer[]>(){})

助けてください。なぜ今このエラーが発生するのかを理解しようと、何時間も頭をひねっています。

4

2 に答える 2

4

Integer.valueOf(spritesPaint[0].toString())は単一の整数ですが、あなたの説明から、1次元配列内の文字列を整数であるかのようにソートしたいようですspritesPaint[0]。まさにそれを行う変更は次のとおりです。

Arrays.sort(spritesPaint[0], new Comparator<String>() {
    @Override public int compare(final String entry1, final String entry2) {
        final Integer time1 = Integer.valueOf(entry1);
        final Integer time2 = Integer.valueOf(entry2);
        return time1.compareTo(time2);
    }
});

または、配列の最初の次元を配列の 2 番目の次元の最初の要素で並べ替えようとしている場合は、次のように変更します。

Arrays.sort(spritesPaint, new Comparator<String[]>() {
    @Override public int compare(final String[] entry1, final String[] entry2) {
        final Integer time1 = Integer.valueOf(entry1[0]);
        final Integer time2 = Integer.valueOf(entry2[0]);
        return time1.compareTo(time2);
    }
});
于 2013-01-16T20:20:23.837 に答える
3

エラー メッセージは、タイプ T (ジェネリック) の配列を渡す代わりに、整数を渡していることを意味します。だから、あなたが持っている場所:

Arrays.sort(Integer.valueOf(spritesPaint[0].toString()), ...

合格したい

Arrays.sort(arrayToBeSorted, ...

(また、この例が何をしているのか本当に理解できないので、変数はより良い名前で行うことができます...)

于 2013-01-16T20:20:03.750 に答える