2016-04-17 4 views
2

Я довольно новичок в java, и мне было интересно, как я могу умножить число, которое пользователь вводит в текстовое поле в число, которое они выбирают в поле со списком. до сих пор у меня есть это:Умножение текстового поля с полем со списком 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; 

Что я получаю сейчас просто 0.

+0

Какие номера вы тестируете? Разве вы не должны использовать числа с плавающей запятой, такие как 'double', а не' int'? В противном случае все, начиная с десятичной точки, будет удалено. – 4castle

+0

Какие варианты у вас есть в вашем поле со списком? – Dadani

+0

У меня есть 5, 10, 15, 20 – Karavi

ответ

0

Ваш TipCost должен иметь тип double, чтобы получить числа с десятичной точкой.

Кроме того, ваши расчеты страдают от целочисленного деления, которое игнорирует остатки. Вычисления, которые делят целое число на 100, лучше иметь целое число больше 100, иначе результат всегда будет 0.

У вас также есть некоторые логические ошибки. Вот как вы должны исправить свой код:

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

Вы можете упростить еще больше, выполнив 'double TipCost = Math.round (Cost * Tip) /100.0;' – 4castle

+0

Большое вам спасибо! – Karavi

0

Вместо приведение выбранного значения, попробуйте вызвать метод toString() на выбранном элементе, например, так:

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