-1

ArrayList (整数を含む) を引数の 1 つとして受け入れるクラスのコンストラクターを作成しようとしています。後でこのクラスをインスタンス化するときに、適切な事前入力された値のリストを渡すので、コンストラクター内で空のリストを作成したくありません。

残念ながら、以下のコードをコンパイルしようとすると、Java は 23 行目 (コンストラクターの関数定義) に関連する 5 つのエラーを吐き出します。アドバイスをいただければ幸いです。

/*
 * SumGenerator
 * 
 * @author James Scholes
*/

import java.util.ArrayList;
import java.util.Random;

public class SumGenerator
{
    // Some initial variables
    public int timesTable;
    public int multiple;

    /*
     * Constructor
     * 
     * @param timesTable(int): The times table to use for sum generation
     * @param limit(int): The highest multiple to use in sum generation
     * @param previousMultiples(ArrayList<Integer>): The previously used multiples to avoid sum duplication
    */
    public SumGenerator(int timesTable, int limit = 10, ArrayList<Integer> previousMultiples)
    {
        this.timesTable = timesTable;
        Random randomGenerator = new Random();

        // Create a list to store our multiples
        ArrayList<Integer> multiples = new ArrayList<Integer>();
        // and add our multiples to it, only if 
        // they haven't been used before
        for(int i = timesTable; i <= limit; i++)
        {
            if(previousMultiples.contains(i))
            {
                continue;
            }
            else
            {
                multiples.add(i);
            }
        }

        this.multiple = multiples.get(randomGenerator.nextInt(multiples.size()));
    }

}

SumGenerator.java:23: error: ')' expected
    public SumGenerator(int timesTable, int limit = 10, ArrayList<Integer> previousMultiples)
                                                 ^
SumGenerator.java:23: error: illegal start of type
    public SumGenerator(int timesTable, int limit = 10, ArrayList<Integer> previousMultiples)
                                                    ^
SumGenerator.java:23: error: <identifier> expected
    public SumGenerator(int timesTable, int limit = 10, ArrayList<Integer> previousMultiples)
                                                      ^
SumGenerator.java:23: error: ';' expected
    public SumGenerator(int timesTable, int limit = 10, ArrayList<Integer> previousMultiples)
                                                       ^
SumGenerator.java:23: error: <identifier> expected
    public SumGenerator(int timesTable, int limit = 10, ArrayList<Integer> previousMultiples)
                                                                                            ^
5 errors
4

3 に答える 3

6

Java はデフォルト引数をサポートしていません。

于 2013-04-23T20:16:56.017 に答える
5

Java: のパラメータにデフォルト値を指定することはできませんint limit = 10。回避するには、オーバーロードされたコンストラクターを提供します。1 つは持っておらずlimit、もう 1 つはデフォルト値を提供します。

public SumGenerator(int timesTable, ArrayList<Integer> previousMultiples)
{
    this(timesTable, 10, previousMultiples);
}

public SumGenerator(int timesTable, int limit, ArrayList<Integer> previousMultiples)
{
    // Your constructor here.
}
于 2013-04-23T20:17:17.723 に答える
2
public SumGenerator(int timesTable, int limit = 10, ArrayList<Integer> previousMultiples)

を削除= 10int limit = 10ます。Java は、コンストラクターまたはメソッド引数のデフォルト値をサポートしていません。

于 2013-04-23T20:17:17.390 に答える