0

Arrays.sort() は次のエラーを返します:

FiveDice.java:19: error: no suitable method found for sort(int)
   Arrays.sort(compNums);

forループから何かを取り出すと、あなたは1つの数字であると考えられるか、エラーが発生します。他にどのような並べ替えオプションを使用できますか?

import java.util.*;
public class FiveDice {
    public static void main(String[] args) {
        int x;
        int compNums = 0;
        int playerNums;

        Die[] comp = new Die[5];
        Die[] player = new Die[5];
        System.out.print("The highest combination wins! \n5 of a kind, 4 of a kind, 3 of a kind, or a pair\n");
//computer
        System.out.print("Computer rolled:  ");
        for(x = 0; x < comp.length; ++x) {
            comp[x] = new Die();
            compNums = comp[x].getRoll();
           //Arrays.sort(compNums); <--does not work
           System.out.print(compNums + " ");
        }
//player
        System.out.print("\nYou rolled: \t  ");
        for(x = 0; x < player.length; ++x) {
            player[x] = new Die();
            playerNums = player[x].getRoll();
            System.out.print(playerNums + " ");
        }
    }
}

ダイクラス

public class Die {
    int roll;
    final int HIGHEST_DIE_VALUE = 6;
    final int LOWEST_DIE_VALUE = 1;
    public Die()
       {   } 
    public int getRoll() { 
        roll = ((int)(Math.random() * 100) % HIGHEST_DIE_VALUE + LOWEST_DIE_VALUE);
        return roll; }
    public void setRoll()
        { this.roll = roll; } 

}

4

4 に答える 4

1

最も簡単な方法は、 Comparable を Die クラスに実装し、 getter メソッドではなく Die のコンストラクターにロールの値を設定することで、問題は解決します。

public class Die implements Comparable<Die> {
    private int roll;
    final int HIGHEST_DIE_VALUE = 6;
    final int LOWEST_DIE_VALUE = 1;
    public Die() {
        roll = ((int)(Math.random() * 100) % HIGHEST_DIE_VALUE + LOWEST_DIE_VALUE);
    }


    public int getRoll() {
         return roll;
    }        
    public void setRoll(int roll) {
         this.roll = roll;
    }

    public int compareTo(Die d) {
         return new Integer(d.getRoll()).compareTo(new Integer(this.getRoll()));
    }

}

Arrays.sort(Die[])Die の配列をソートします。

于 2013-10-19T07:41:41.710 に答える
0

単一の値であるため、sort()実行できません。整数の配列としてではなくcompNums、値として宣言します。int

代わりに、配列を作成し、ロール値compNumsを入力してから、結果の配列に対して並べ替え操作を実行する必要があります。Die以下はあなたが求めているものを達成すると信じています。

int[] compNums = new int[5];
...
for(x = 0; x < comp.length; ++x) {
    comp[x] = new Die();
    compNums[x] = comp[x].getRoll();
}
Arrays.sort(compNums);
// print results
于 2013-10-19T07:01:42.723 に答える
0

not パラメータに配列を渡す必要がArray.Sort(arr)あります。次のようなことを行う必要があります。Array.Sort(int[]compNums);

匿名型を使用している場合は、次のようcomp[]compNumsにする必要があります

java.util.Arrays.sort(comp[]compNums, new java.util.Comparator<Object[]>() {
        public int compare(Object a[], Object b[]) {
            if(something)
                return 1;

                return 0;
        }
    });
于 2013-10-19T07:50:58.390 に答える