2017-09-08 10 views
-1

Für eine Schulaufgabe habe ich eine Abstimmungsmaschine gemacht, die Stimmen zählt und ausdruckt. Hier ist die VotingMachine-Klasse mit all ihren Methoden.Warum funktioniert mein Abstimmungssimulator nicht?

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()); 
} 
} 

Dies ist der Fahrer, den ich für das Projekt bin mit:

public class MachineDriver { 

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

Allerdings, wenn ich das Programm der percentDemocrat, percentRepublican laufen und percentIndependent alle als 0.0 angezeigt. Was habe ich falsch gemacht? Hier ist, was in der Konsole erscheint:

Demokraten: 2 Republikaner: 1 Independent: 1 Anzahl der Stimmen: 4 Prozent Demokrat Stimmen: 0.0 Prozent Republikaner Stimmen: 0.0 Prozent Unabhängige Stimmen: 0.0

+0

In 'percentDemocrat()' und die anderen Methoden zu verdoppeln gegossen, die Zahlen, die Sie für die Mathematik verwenden, sind 'int's. Sie müssen sie in 'float's (oder' double's) umwandeln, um korrekte Fließkomma-Antworten zu erhalten. Zum Beispiel: 'double percentDemocrat = (double) democratVotes/(double) totalVotes();' – Frecklefoot

Antwort

1

Sie teilen Ganzzahlen, deshalb erhalten Sie das Ergebnis gleich Null.

Sie können integer

public double percentDemocrat(){ 
    double percentDemocrat = ((double)democratVotes)/totalVotes(); 
    return percentDemocrat; 
}