Mehrere Zahlen, Zahlen Gesamt: Prozent?

  • Themenstarter Themenstarter ByeBye 203306
  • Beginndatum Beginndatum
B

ByeBye 203306

Hey,

seit Beginn des neuen Schuljahres habe ich Informatik gewählt, wo wir uns mit Java beschäftigten. hatten bisher 3 Doppelstunden und in der letzten Stunde haben wir ein Arbeitsblatt mit 4 Aufgaben bekommen. Die ersten drei waren kein Problem und der erste Teil der vierten auch nicht. Hier mal die Aufgabe:

4) Erstellen Sie ein Stimmenzähler für eine Wahl. Diese soll aus den in Hessen
regierenden Parteien bestehen und jeweils eine Stimme für die jeweilige Partei
hochzählen. Für jede Partei muss es also einen Button und ein Label geben.
Erweitern Sie das Programm, so dass auch noch die Stimmenanzahl in Prozent
erscheint.

Es ist keine Hausaufgabe oder ähnliches, aber mich interessiert gerade brennend wie ich das mit den Prozenten zustande bekommen.

Mit meinem bisherigen Code ist es so, wenn ich zum Beispiel auf den Button für die SPD klicke, bekommt die SPD eine Stimme, die Gesamtstimmen sind ebenfalls 1, dann hat die SPD auch 100 %. Klicke ich noch mal auf SPD, hat sie auch noch 100 Prozent, so soll es ja auch sein. Aber klicke ich nun auf den Button für CDU, bekommt die CDU auch eine Stimme, die Gesamtstimmen sind nun 3 (2xSPD, 1xCDU), aber dann steht hinter SPD und CDU jeweils 0.

Falls es noch von Interesse ist, wir programmieren mit NetBeans 6.1 und ich verwende Mac OS X Leopard mit Java 6.

Hier mein Code:

Code:
 public void Stimmen() {
        // TODO add your handling code here:
       gesamtStimmen = npdAnzahl+linkeAnzahl+b90Anzahl+fdpAnzahl+cduAnzahl+spdAnzahl;
       
       String ausgabeGesamt = Hilfsfunktionen.int2string(gesamtStimmen);
       stimmenGesamt.setText(ausgabeGesamt);
    }
    
    public void Prozent() {
        // TODO add your handling code here: 
        
        String eingabeStimmenGesamt = stimmenGesamt.getText();
        int eingabeStimmenZahl = Hilfsfunktionen.string2int(eingabeStimmenGesamt);
        
        int spdProzent = (spdAnzahl/eingabeStimmenZahl)*100;
        int cduProzent = (cduAnzahl/eingabeStimmenZahl)*100;
        int fdpProzent = (fdpAnzahl/eingabeStimmenZahl)*100;
        int b90Prozent = (b90Anzahl/eingabeStimmenZahl)*100;
        int linkeProzent = (linkeAnzahl/eingabeStimmenZahl)*100;
        int npdProzent = (npdAnzahl/eingabeStimmenZahl)*100;
        
        String prozentAusgabeSPD = Hilfsfunktionen.int2string(spdProzent);
        String prozentAusgabeCDU = Hilfsfunktionen.int2string(cduProzent);
        String prozentAusgabeB90 = Hilfsfunktionen.int2string(b90Prozent);
        String prozentAusgabeFDP = Hilfsfunktionen.int2string(fdpProzent);
        String prozentAusgabeLinke = Hilfsfunktionen.int2string(linkeProzent);
        String prozentAusgabeNPD = Hilfsfunktionen.int2string(npdProzent);
        
        prozentSPD.setText(prozentAusgabeSPD);
        prozentCDU.setText(prozentAusgabeCDU);
        prozentFDP.setText(prozentAusgabeFDP);
        prozentB90.setText(prozentAusgabeB90);
        prozentLinke.setText(prozentAusgabeLinke);
        prozentNPD.setText(prozentAusgabeNPD);
        
        
        
    }
    
    
    
    private void spdButtonMouseClicked(java.awt.event.MouseEvent evt) {                                       
        // TODO add your handling code here:
        
        spdAnzahl = spdAnzahl+1;
        
        String ausgabeSPD = Hilfsfunktionen.int2string(spdAnzahl);
        anzahlSPD.setText(ausgabeSPD);
        
        Stimmen();
        Prozent();
    }                                      

    private void cduButtonMouseClicked(java.awt.event.MouseEvent evt) {                                       
        // TODO add your handling code here:
        
        cduAnzahl = cduAnzahl+1;
        
        String ausgabeCDU = Hilfsfunktionen.int2string(cduAnzahl);
        anzahlCDU.setText(ausgabeCDU);
        
        Stimmen();
        Prozent();
    }                                      

private void fdpButtonMouseClicked(java.awt.event.MouseEvent evt) {                                       
// TODO add your handling code here:
    
    fdpAnzahl = fdpAnzahl+1;
    
    String ausgabeFDP = Hilfsfunktionen.int2string(fdpAnzahl);
    anzahlFDP.setText(ausgabeFDP);
    
    Stimmen();
    Prozent();
}                                      

private void b90ButtonMouseClicked(java.awt.event.MouseEvent evt) {                                       
// TODO add your handling code here:
    
    b90Anzahl = b90Anzahl+1;
    
    String ausgabeB90 = Hilfsfunktionen.int2string(b90Anzahl);
    anzahlB90.setText(ausgabeB90);
    
    Stimmen();
    Prozent();
}                                      

private void linkeButtonMouseClicked(java.awt.event.MouseEvent evt) {                                         
// TODO add your handling code here:
    
    linkeAnzahl = linkeAnzahl+1;
    
    String ausgabeLinke = Hilfsfunktionen.int2string(linkeAnzahl);
    anzahlLinke.setText(ausgabeLinke);
    
    Stimmen();
    Prozent();
}                                        

private void npdButtonMouseClicked(java.awt.event.MouseEvent evt) {                                       
// TODO add your handling code here:
    
    npdAnzahl = npdAnzahl+1;
    
    String ausgabeNPD = Hilfsfunktionen.int2string(npdAnzahl);
    anzahlNPD.setText(ausgabeNPD);
    
    Stimmen();
    Prozent();
}                                      

private void formMouseClicked(java.awt.event.MouseEvent evt) {                                  
// TODO add your handling code here:
    
    
}                                 
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new WahlFenster().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JLabel anzahlB90;
    private javax.swing.JLabel anzahlCDU;
    private javax.swing.JLabel anzahlFDP;
    private javax.swing.JLabel anzahlLinke;
    private javax.swing.JLabel anzahlNPD;
    private javax.swing.JLabel anzahlSPD;
    private javax.swing.JButton b90Button;
    private javax.swing.JLabel b90Variable;
    private javax.swing.JButton cduButton;
    private javax.swing.JLabel cduVariable;
    private javax.swing.JButton fdpButton;
    private javax.swing.JLabel fdpVariable;
    private javax.swing.JButton linkeButton;
    private javax.swing.JLabel linkeVariable;
    private javax.swing.JButton npdButton;
    private javax.swing.JLabel npdVariable;
    private javax.swing.JLabel prozentB90;
    private javax.swing.JLabel prozentCDU;
    private javax.swing.JLabel prozentFDP;
    private javax.swing.JLabel prozentLabel;
    private javax.swing.JLabel prozentLinke;
    private javax.swing.JLabel prozentNPD;
    private javax.swing.JLabel prozentSPD;
    private javax.swing.JButton spdButton;
    private javax.swing.JLabel spdVariable;
    private javax.swing.JLabel stimmenGesamt;
    private javax.swing.JLabel stimmenLabel;
    // End of variables declaration                   
    
    // Eigene Variablen
    
    int spdAnzahl = 0;
    int cduAnzahl = 0;
    int fdpAnzahl = 0;
    int b90Anzahl = 0;
    int linkeAnzahl = 0;
    int npdAnzahl = 0;
    int gesamtStimmen = 0;
}

Schon mal Danke für jegliche Hilfe. :)

Gruß,
Moritz
 
Das lieg an den Datentypen in deiner Rechnung

Wenn der Datentyp der Anzahl Stimmen int ist, dann gibt die Rechnung von deinem Beispiel (1 von 3 Simmen) 1 / 3 = 0.
Denn wenn 2 Operanten int sind, so ist das Ergebniss auch ein int.
Somit wird dass 0.333... auf 0 abgerundet.
 
Hallo,

das ist eben das Problem bei Integern ! Die haben keine Nachkommastellen !

2 durch 3 mal 100 = 0

weil

2 durch 3 = 0 mal 100 = 0

mach einfach

2 mal 100 durch 3 = 66 !

oder arbeite mit float oder double !

Gruß Jadix
 
Zurück