如果循环 - 检查以前的值与新的值

时间:2012-09-09 22:54:17

标签: loops if-statement

没有愚蠢的问题 - 这是我的动机。开始。 我知道这很简单,但我似乎无法完全理解,是什么造成了区别:

double previousLocation = e.getX();
    if (e.getX() != previousLocation);

并且,更改变量的位置

 double previousLocation = e.getX();
    if (previousLocation != e.getX());

e.getX只是在屏幕上设置鼠标的位置。我有一个跟随我的鼠标移动的图形对象。在第一个例子中它起作用,在第二个例子中它不起作用。

3 个答案:

答案 0 :(得分:0)

previousLocation != e.getX()

相当于

e.getX() != previousLocation

答案 1 :(得分:0)

这里唯一的区别是第二次调用e.getX()时。如果将它放在if语句的第二部分中,e.getX()将稍后进行评估。在这段时间里,鼠标可能会略微移动,弄乱你的模糊意图。

另一件需要考虑的事情是,大多数语言的双打并不是100%准确,当比较像你这样的双打时,你应该使用epsilon:

double epsilon = 0.0000001;
if(previousLocation>=e.getX()-epsilon && previousLocation<= e.getX()+epsilon)
   //evaluate

答案 2 :(得分:0)

通常在确定已更改之后存储先前的位置。

void EventHandler( MouseEvent & e )
{
    static double previousLocation = e.getX();
    double currentLocation = e.getX();

    if( previousLocation != currentLocation ) {
        // Take whatever action you need to
        //...

        previousLocation = currentLocation;
    } 
}