前一個問題打印出來:Assigning probability to a random enum object使用foreach循環,從一個ArrayList中添加值,然後利用存取
所以我有這樣的:
import java.util.List;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Random;
import java.util.ArrayList;
import java.util.Scanner;
import java.lang.Integer;
public class ElectoralCollege {
public static final String FILE = "Electoral201X.txt";
private ArrayList <State> stateVotes;
Random rand = new Random();
List<Party> parties = Arrays.asList(Party.DEMOCRAT, Party.DEMOCRAT, Party.REPUBLICAN, Party.REPUBLICAN, Party.INDEPENDENT);
public ElectoralCollege() throws IOException {
stateVotes = new ArrayList<State>();
}
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 numVote = stateData.substring(stateEnd + 2);
Party winner = parties.get(rand.nextInt(5));
State voteInfo = new State(stateName, Integer.parseInt(numVote.trim()), winner);
stateVotes.add(voteInfo);
}
}
public void announceWinner() {
int dem = 0;
int rep = 0;
int ind = 0 ;
for(State a : stateVotes) {
if(a.getWinner().equals(Party.DEMOCRAT))
dem = dem + a.getNumVotes();
else if(a.getWinner().equals(Party.REPUBLICAN))
rep = rep + a.getNumVotes();
else if(a.getWinner().equals(Party.INDEPENDENT))
ind = ind + a.getNumVotes();
}
if(dem >= 270)
System.out.println("DEMOCRATS WIN");
else if(rep >= 270)
System.out.println("REPUBLICANS WIN");
else if(ind >= 270)
System.out.println("INDEPENDENTS WIN");
else
System.out.println("CONGRESS MUST CHOOSE");
for(State b : stateVotes)
System.out.println(b.getName() + " " + b.getWinner());
}
}
我需要回答這個問題:
在announceWinner()中查看stateVotes併爲三方中的每一方加起總共 選舉人票。打印出的總 選舉人票,每一方,如果任何一方具有比270 取勝需要更多,宣佈黨的贏家 - 否則宣佈 ,國會將不得不作出的選擇。最後,打印每個州的個人贏家 。
由於某些原因,它始終打印CONGRESS必須選擇。經進一步調查所有詮釋DEM,IND和代表的值始終爲0。不知道我是否需要初始化變量或不喜歡我這樣做,但它一直給我的錯誤,當我沒有。
存取方法是一個基本的State.class,有一個構造函數和三個存取方法來訪問每個參數的狀態對象的一部分。哪些stateVotes組成。
在stateVotes狀態值也全部搞定。從舊的問題中,我從文件中讀取一行文本,將其寫入一個狀態對象,然後將其放入stateVotes數組列表中。我爲該文件中的每行文本執行了此操作。
第二foreach循環不打印任何東西。
State類是很簡單的:
public class State {
private String Name;
private int votes;
private Party winningParty;
public State(String stateName, int numVote, Party winner) {
Name = stateName;
votes = numVote;
winningParty = winner;
}
public Party getWinner() {
return winningParty;
}
public String getName() {
return Name;
}
public int getNumVotes() {
return votes;
}
}
的狀態數據的示例是 「弗洛里亞29的民主主義」。
在哪裏設置狀態值,我的意思是你在哪裏設置這些值? – 2013-02-24 05:32:36
抱歉忘記了包括那個。 stateVotes的每個狀態對象都是從txt文件中讀取的一行。這是我連接並且工作正常的老問題。更新爲其他人。 – Stax 2013-02-24 05:36:10