1

だから私はここに列挙型を持っています:

public enum Party {

    DEMOCRAT, INDEPENDENT, REPUBLICAN
}

私は現在これを持っています.3つのクラスのうちの1つです:

public class ElectoralCollege {
    public static final String FILE = "Electoral201X.txt";
    private ArrayList <State> stateVotes;
    Random rand = new Random();

    public ElectoralCollege() throws IOException    {

        stateVotes = new ArrayList<State>();
        assignStates();
    }

    public void assignStates() throws IOException   {

        File f = new File(FILE);
        Scanner fReader = new Scanner(f);

        while(fReader.hasNext())    {

            String stateData = fReader.nextLine();
            int stateEnd = stateData.indexOf(" - ");
            String stateName = stateData.substring(0, stateEnd);
            String stateVotes = stateData.substring(stateEnd + 2);
            //System.out.println(stateName + " " + stateVotes);


        }

ここでは、「フロリダ - 29」のように州名とその選挙人投票数を含むファイルから読み取っているので、すべてがわかりました。

次に行う必要があるのは、ランダム オブジェクトを使用して、Party 列挙型からパーティーを割り当てることです。共和党と民主党は 2/5 の確率で勝利する必要があります...一方、無党派は 1/5 の確率で勝利する必要があります。次に、State オブジェクト (州名、投票数、政党をパラメーターとして受け取る) を作成し、それをその配列リストに追加する必要があります。そのために for each ループを使用する可能性が最も高いですが、それについてさらに調査する必要があります。

私の質問は、これらの 3 つのパーティに対して設定された確率でこのランダム オブジェクト rand を使用し、それを実行するにはどうすればよいかということです。誰でもアイデアはありますか?

編集: 要点: これら 3 つのパーティに 2/5 と 1/5 の確率を実装し、ランダム オブジェクトを呼び出して、それらの確率に基づいてパーティを作成するにはどうすればよいですか?

mreの回答の後、私はこれをしました:

Random rand = new Random();
    List<Party> parties = Arrays.asList(Party.DEMOCRAT, Party.DEMOCRAT, Party.REPUBLICAN, Party.REPUBLICAN, Party.INDEPENDENT);

そして少し遅れて……。

public void assignStates() は IOException をスローします {

File f = new File(FILE);
Scanner fReader = new Scanner(f);

while(fReader.hasNext())    {

    String stateData = fReader.nextLine();
    int stateEnd = stateData.indexOf(" - ");
    String stateName = stateData.substring(0, stateEnd);
    String numVote = stateData.substring(stateEnd + 2);

    Party winner = parties.get(rand.nextInt(5));
    //System.out.println(stateName + " " + numVote + " " + winner);

    State voteInfo = new State(stateName, Integer.parseInt(numVote.trim()), winner);
    stateVotes.add(voteInfo);

}

}

回答済み、新しい質問: foreach ループを使用して配列リストから値を追加し、アクセサーを使用してそれらを出力します

4

1 に答える 1

1

Party5つのインスタンスのコレクションがあります。ここで、2はDEMOCRAT、2はREPUBLICAN、、1はです。INDEPENDENT次に、乱数ジェネレーターを使用して、アクセスするためのランダムインデックス(つまり、0〜4)を生成します。

import java.util.Arrays;
import java.util.List;
import java.util.Random;

public class Demo 
{
    public static void main(String[] args) 
    {
       Random r = new Random();
       List<Party> parties = Arrays.asList(Party.DEMOCRAT, Party.DEMOCRAT, Party.REPUBLICAN, Party.REPUBLICAN, Party.INDEPENDENT);

       System.out.println(parties.get(r.nextInt(parties.size())));
    }

    enum Party
    {
        DEMOCRAT,
        REPUBLICAN,
        INDEPENDENT;
    }
}
于 2013-02-24T04:03:54.123 に答える