-1

问候,

我有一个永远不会通过的简单条件:

if(datas.date.getTime()-temps.date.getTime()>=5000)

我想检查从一个到另一个是否有 5 秒。


更新

这是setter和getter:

public class Data{
    Date date;
    public Date getDate() {
        return date;
    }
    public void setDate() {
        Date now = new Date();
        this.date = now;
    }
}

所以,我打电话

Data data;
data.setDate();
processValues(data);

这是过程值:

public void processValues(Data dat){

    if(datas.size()==7){
        writeValues(datas);
        datas=new Vector<Data>();
        temps=new Vector<Data>();
    }
    temps.add(dat);
    datas.add(dat);
}

这是 writeValues:

public void writeValues(Vector<Data> datas){
    for(i=0;i<temps.size();i++)
        for(j=0;j<datas.size();j++){
            if(temps.elementAt(i).epc==datas.elementAt(j).epc)
                if(datas.elementAt(j).date.getTime()-temps.elementAt(i).date.getTime()>=5000)
                    try {
                        dao.writeToDatabase(datas.elementAt(j));
                        i=j;
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
        }

}
4

3 回答 3

0

如果你输出datas.date.getTime()and temps.date.getTime(),哪个更高?我的猜测是它们被颠倒了,减法给出了一个负数——当然它永远不会大于 5000。或者数据点的间隔不是 5 秒。

于 2010-12-19T23:40:17.843 回答
0

你说你有一个看起来像这样的吸气剂:

public Date getDate() {
    return date;
}

Date对象是可变的,因此您可能应该防御性地复制。你可以用clone()这个。

基于这一点和你的问题的症状,也许你的两个Date对象实际上是同一个对象。您是否尝试过使用==(或!=)来确认它们确实是单独的对象?

更新

根据更新的信息,我可以看到为什么这种情况永远不会过去。但是,我真的不明白你想让你的代码做什么。您实际上只是在测试是否可以在 5 秒内创建 7 个对象,如果不能,则将其中的一些写出来。无论您是否将对象写出,无论哪种方式,您都可以清除temps和。datas我的猜测是您不想清除这些未写出的元素向量。我也不明白为什么你同时拥有两者datas以及temps它们何时包含完全相同的元素。

于 2010-12-19T23:44:54.117 回答
0

您说您的 processValues() 方法如下所示:

public void processValues(Data dat){
    if(datas.size()==7){
        writeValues(datas);
        datas=new Vector<Data>();
        temps=new Vector<Data>();
    }
    temps.add(dat);
    datas.add(dat);
}

您正在向两个向量添加相同的实例(“dat”)。如果您更新一个,它必然会更新另一个,因此该date领域永远不会有差异。

于 2010-12-20T00:13:10.643 回答