как умножить Jspinner и двойную переменную?

#java

#java

Вопрос:

Я пытаюсь создать программу, которая имитирует проверку элементов. И я хотел бы, чтобы количество элементов умножалось на стоимость единицы, чтобы получить общую стоимость, но у меня возникли проблемы с поиском способа сделать это.

Вот мой код.

     JLabel amount0 = new JLabel("Amount");
    JLabel unitcost0 =new JLabel("Unit Cost");
    JLabel unitcost1 = new JLabel("$2.45");
    JLabel unitcost2 = new JLabel("$79.99");
    JLabel unitcost3 = new JLabel("$45.43");
    JLabel unitcost4 = new JLabel("$3.00");
    JLabel unitcost5 = new JLabel("$42.00");
    JSpinner amount1= new JSpinner(new SpinnerNumberModel(0,0,50,1));
    JSpinner amount2= new JSpinner(new SpinnerNumberModel(0,0,50,1)); 
    JSpinner amount3 = new JSpinner(new SpinnerNumberModel(0,0,50,1));
    JSpinner amount4= new JSpinner(new SpinnerNumberModel(0,0,50,1));
    JSpinner amount5 = new JSpinner(new SpinnerNumberModel(0,0,50,1));
    
    
    JLabel cost0 = new JLabel("Cost");
    JLabel cost1 = new JLabel ( unitcost1* amount1);
 

любая помощь была бы очень признательна.

Ответ №1:

В Java вы можете выполнять математические операции только с числами, поэтому в вашем случае вам нужно хранить числа как числовую переменную, например Double :

 Double price = 2.45;
 

Затем вы можете использовать эту числовую переменную в своих компонентах:

 JLabel yourLabel = new JLabel("$"   price);
 

Затем для вычисления стоимости вам нужно получить числовое значение JSpinner:

 int spinnerValue = yourSpinner.getValue();
 

И для вычисления конечных итогов:

 Double total = price * spinnerValue;
JLabel cost1 = new JLabel ("$"   total);
 

Обратите внимание, что если вы хотите, чтобы это происходило в реальном времени при изменении JSpinner, тогда вам нужно создать событие action для jSpinners, которое обновит значения / метки, это гораздо большая тема и требует нового вопроса, но вот примерный пример:

 spinner.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent e) {
        int spinnerValue = ((JSpinner)e.getSource()).getValue();
        Double total = price * spinnerValue;
        yourLabel.setText("$"   total);
    }
});