Мне нужно рассчитать доход от автомобилей, проданных за определенный день - PullRequest
0 голосов
/ 13 мая 2019

У меня есть JTable, и все содержащиеся в нем строки представляют автомобили с определенными деталями в столбцах.Среди этих деталей цена и дата продажи.

Проблема, с которой я столкнулся, заключается в том, что мне нужно вычислить сумму всех автомобилей, проданных за определенный день.Другими словами, это вычисление суммы определенных значений строки из одного столбца («Цена») с другим столбцом («Дата продажи») в качестве ограничения.

Я ввожу дату, на которую я хочу рассчитать, из JDateChooser

if(rdbtnByDay.isSelected()){
    if(DayChooser.getDate() != null)
    {
        for(int i = 0; i < table.getRowCount(); i++)
        {

            if(carsTable.getValueAt(i, 10) != null)
            {

                int rowCount = carsTable.getRowCount();
                int sum = 0;
                for (int j = 0; j < rowCount; j++)
                                        {
                    if(carsTable.getValueAt(j, 10) == CarProperties.sellingDate)
                    {
                        x = true;                                       
                    }

                    if (x == true)
                        sum = sum + Integer.parseInt(carsTable.getValueAt(j, 8).toString());
                }
                                    Revenue.setText(Integer.toString(sum)); 
            }   
        }
    }

    else if (DayChooser.getDate() == null)
        JOptionPane.showMessageDialog(null, "Please add a valid day","UpdateError",JOptionPane.ERROR_MESSAGE);

1 Ответ

0 голосов
/ 13 мая 2019

Проблема с этим кодом:

if(carsTable.getValueAt(j, 10) == CarProperties.sellingDate)
{
    x = true;                                       
}

if (x == true)
    sum = sum + Integer.parseInt(carsTable.getValueAt(j, 8).toString());

... означает, что x никогда не будет сброшено до false. Поэтому, если автомобиль считается включенным, все последующие автомобили также включаются.

Это может решить эту проблему:

if(carsTable.getValueAt(j, 10) == CarProperties.sellingDate)
{
    sum = sum + Integer.parseInt(carsTable.getValueAt(j, 8).toString());
}

Редактировать : Вам также не нужно сбрасывать sum в 0 в цикле. Переместите эту строку за пределы цикла for:

int sum = 0;  // this line needs to be outside the for loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...