2016-04-17 8 views
2

Ich bin ziemlich neu zu Java und ich fragte mich, wie ich eine Zahl multiplizieren könnte, die Benutzereingaben in einem Textfeld zu einer Zahl, die sie in einem Kombinationsfeld auswählen. Bisher habe ich dies:Multiplizierendes Textfeld mit Kombinationsfeld Netbeans

int Cost = Integer.parseInt(txtCost.getText()); 
    int TipCost; 

    int Tip = Integer.parseInt((String)cboTip.getSelectedItem()); 

    TipCost = Cost*(Tip/100); 
    TipCost = Math.round(TipCost); 
    TipCost = TipCost/100; 

Was ich jetzt bekommen, ist nur 0.

+0

Mit welchen Nummern testen Sie es? Sollten Sie keine Gleitkommazahlen wie 'double' und nicht' int' verwenden? Ansonsten wird alles nach dem Komma entfernt. – 4castle

+0

Welche Art von Optionen haben Sie in Ihrer Combo-Box? – Dadani

+0

ich habe 5, 10, 15, 20 – Karavi

Antwort

0

Ihre TipCost muss vom Typ double sein, um Zahlen mit einem Dezimalpunkt zu erzeugen.

Auch Ihre Berechnungen leiden unter Integer Division, die Reste ignoriert. Berechnungen, die eine ganze Zahl durch 100 teilen, sollten besser mit einer Ganzzahl größer als 100 sein, sonst ist das Ergebnis immer 0.

Sie haben auch einige logische Fehler. Hier ist, wie Sie Ihren Code beheben sollten:

int Cost = Integer.parseInt(txtCost.getText()); 
int Tip = Integer.parseInt(cboTip.getSelectedItem().toString()); 

double TipCost = Cost*Tip/100.0; // get the tip cost, 100.0 avoids integer division 
TipCost = Math.round(TipCost*100)/100.0; // round to 2 decimal places 
+1

Sie könnten noch weiter vereinfachen, indem Sie 'double TipCost = Math.round (Kosten * Tipp) /100.0;' – 4castle

+0

Vielen Dank! – Karavi

0

Statt den ausgewählten Wert Gießen, versuchen, eine toString() Methode auf das ausgewählte Element aufrufen, etwa so:

int Tip = Integer.parseInt(cboTip.getSelectedItem().toString());