2017-09-08 24 views
-1

對於一個學校任務,我製作了一個投票機,可以對選票進行統計並打印出來。這是VotingMachine類及其所有方法。爲什麼我的投票模擬器不工作?

public class VotingMachine { 
//declaring instance variables 
private int democratVotes; 
private int republicanVotes; 
private int independentVotes; 
//default constructor 
public VotingMachine(){ 
} 

//parameter constructor for changing values 
public VotingMachine(int demVotes, int repubVotes, int indeVotes){ 
this.democratVotes = demVotes; 
this.republicanVotes = repubVotes; 
this.independentVotes = indeVotes; 
} 
//getter methods 
public int getDemocratVotes(){ 
return democratVotes; 
} 
public int getRepublicanVotes(){ 
return republicanVotes; 
} 
public int getIndependentVotes(){ 
return independentVotes; 
} 
//setter methods 
public void setDemocratVotes(int votes){ 
this.democratVotes = votes; 
} 
public void setRepublicanVotes(int votes){ 
this.republicanVotes = votes; 
} 
public void setIndependentVotes(int votes){ 
this.independentVotes = votes; 
} 
//increment votes by 1 methods 
public void voteDemocrat(){ 
democratVotes += 1; 
} 
public void voteRepublican(){ 
republicanVotes += 1; 
} 
public void Independent(){ 
independentVotes += 1; 
} 
//overloaded methods (methods with same names as above) 
public void voteDemocrat(int votes){ 
democratVotes += votes; 
} 
public void voteRepublican(int votes){ 
republicanVotes += votes; 
} 
public void voteIndependent(int votes){ 
independentVotes += votes; 
} 
//method to clear all votes 
public void clearVote(){ 
democratVotes = 0; 
republicanVotes = 0; 
independentVotes = 0; 
} 
//method to calculate total votes 
public int totalVotes(){ 
int totalVotes = democratVotes + republicanVotes + independentVotes; 
return totalVotes; 
} 
//methods to calculate percentages while calling totalVotes() 
public double percentDemocrat(){ 
double percentDemocrat = democratVotes/totalVotes(); 
return percentDemocrat; 
} 
public double percentRepublican(){ 
double percentRepublican = republicanVotes/totalVotes(); 
return percentRepublican; 
} 
public double percentIndependent(){ 
double percentIndependent = independentVotes/totalVotes(); 
return percentIndependent; 
} 

//method to print statistics 
public void percentStats(){ 
System.out.println("Democrats: " + democratVotes); 
System.out.println("Republicans: " + republicanVotes); 
System.out.println("Independent: " + independentVotes); 
System.out.println("Total Votes: " + totalVotes()); 
System.out.println("Percent Democrat Votes: " + percentDemocrat()); 
System.out.println("Percent Republican Votes: " + percentRepublican()); 
System.out.println("Percent Independent Votes: " + percentRepublican()); 
} 
} 

這是我使用項目的驅動程序:

public class MachineDriver { 

    public static void main(String[] args) { 
     VotingMachine test = new VotingMachine(); 
     test.voteDemocrat(); 
     test.voteDemocrat(); 
     test.voteRepublican(); 
     test.voteIndependent(); 
     test.percentStats(); 
    } 
} 

然而,當我運行程序percentDemocrat,percentRepublican和percentIndependent全部顯示爲0.0。我做錯了什麼?下面是在控制檯中顯示的內容:

民主黨:2名 共和黨人:1 獨立:1個 總投票:4 百分比民主黨投票:0.0 百分比共和黨投票:0.0 百分比獨立投票:0.0

+0

在'percentDemocrat()'和其他方法,您使用的數學數字是'int's。你需要將它們轉換爲'float'(或'double's)來獲得正確的浮點數答案。例如:'double percentDemocrat =(double)democratVotes /(double)totalVotes();' – Frecklefoot

回答

1

你正在分割整數,這就是爲什麼你得到的結果等於零。

你可以施放整數翻番

public double percentDemocrat(){ 
    double percentDemocrat = ((double)democratVotes)/totalVotes(); 
    return percentDemocrat; 
} 
相關問題