我需要计算某天售出的汽车的收入

时间:2019-05-13 01:03:30

标签: java sum jtable

我有一个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 :(得分:0)

此代码的问题:

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