我有一个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);
答案 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