1

私は大学で Java のクラスを取っています。私のインストラクターは実際には C から派生した言語の教師であるため、このコードで何が起こっているのか理解できません。このページhttp://docs.oracle.com/javase/6/docs/api/java/util/List.htmlで、構文「list[].add(int index, element)」を使用できることを読みました特定のオブジェクトまたは計算を特定のインデックスに追加して、必要なコーディングの量を減らします。私が作成しようとしているプログラムは、練習用の D&D 用のランダム統計ジェネレーターです。エラーを与えるメソッドは以下のとおりです。

//StatGenrator は ActionListener で使用されます

private String StatGenerator ()
{
        int finalStat;
        String returnStat;

        //Creates an empty list.
        int[] nums={};

        //Adds a random number from 1-6 to each list element.
        for (int i; i > 4; i++)
            nums[].add(i, dice.random(6)+1); //Marks 'add' with "error: class expected"

        //Sorts the list by decending order, then drops the
        //lowest number by adding the three highest numbers 
        //in the list.            
        Arrays.sort(nums);
        finalStat = nums[1] + nums[2] + nums[3]; 

        //Converts the integer into a string to set into a 
        //texbox.
        returnStat = finalStat.toString();
        return returnStat;
}

私の最終的な目標は、ある種の並べ替えられたリストまたはセット内の最小値を削除する方法を使用することです。この方法のポイントは、1 から 6 までの 4 つの乱数を生成し、最も低いものを削除して最も高いものを 3 つ追加することです。最終的な数字はテキストボックスのテキストになるので、文字列に変換して返します。コードの残りの部分は正常に動作しますが、この方法で問題が発生しただけです。

誰かがアイデアを持っているなら、私はすべて耳を傾けています。少し調べてみたところ、ArrayList を使用して新しい List オブジェクトを作成する方法がわかりましたが、その構文についてはわかりません。最後に、別の質問でこの構文を探してみましたが、stackoverflow のどこにも見つかりませんでした。私が何かを逃した場合は、お詫び申し上げます。

4

4 に答える 4

4

'int nums[]' はリストではなく、配列です。

List<Integer> intList = new ArrayList<>();

たとえば、新しい ArrayList を作成します。

次の Syntax を使用して、リスト内の Elements に直接アクセスできます。

intList.get(0); // Get the first Element

コレクション クラスでリストを並べ替えることができます。

Collections.sort(intList);

Java のコレクションに関する情報を次に示します: http://docs.oracle.com/javase/tutorial/collections/

于 2013-04-18T15:27:50.460 に答える
3

配列は固定サイズであるため、最初にすべてのスロットにスペースを割り当てる必要があります。次に、配列に数値を入れるには、に割り当てnums[i]ます。add() メソッドは必要ありません。

int[] nums = new int[4];

for (int i = 0; i < 4; i++)
    nums[i] = dice.random(6) + 1;

Arrays.sort(nums);
finalStat = nums[1] + nums[2] + nums[3]; 

または、動的サイズの配列が本当に必要な場合は、ArrayList を使用します。ArrayList は拡大および縮小できます。

List<Integer> nums = new ArrayList<Integer>();

for (int i = 0; i < 4; i++)
    nums.add(dice.random(6) + 1);

Collections.sort(nums);
finalStat = nums.get(1) + nums.get(2) + nums.get(3); 

ArrayList が組み込み型ではなくクラスであるため、構文がどのように異なるかに注目してください。

于 2013-04-18T15:27:42.170 に答える
2

nums[].add(i, dice.random(6)+1); //「エラー: クラスが必要です」で「追加」をマークします

add配列で使用しようとしています。List は動的配列ですが、それはarray == Listという意味ではありません。代わりに List を使用する必要があります。

 List<Integer> nums=new ArrayList<Integer>();

//Adds a random number from 1-6 to each list element.
for (int i; i > 4; i++)
    nums.add(i, dice.random(6)+1); 
于 2013-04-18T15:28:35.280 に答える
0

配列とリストを混在させています。

チュートリアルを見てください:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

http://docs.oracle.com/javase/tutorial/collections/index.html

于 2013-04-18T15:29:49.237 に答える