如果语句不起作用,程序直接输入PP_9语句



我正在尝试编写一个检测"空闲"状态的程序,但我在代码中看不到问题。有人可以帮我一个有用的技巧吗?这是我的代码:

package idlestatus;
import java.awt.MouseInfo;
public class Idlestatus {
    public static void main(String[] args) throws InterruptedException {
        Integer firstPointX = MouseInfo.getPointerInfo().getLocation().x;
        Integer firstPointY = MouseInfo.getPointerInfo().getLocation().y;
        Integer afterPointX;
        Integer afterPointY;
        while (true) {
            Thread.sleep(10000);
            afterPointX = MouseInfo.getPointerInfo().getLocation().x;
            afterPointY = MouseInfo.getPointerInfo().getLocation().y;
            if (firstPointX == afterPointX && firstPointY == afterPointY) {
                System.out.println("Idle status");
            } else {
                System.out.println("(" + firstPointX + ", " + firstPointY + ")");
            }
            firstPointX = afterPointX;
            firstPointY = afterPointY;
        }
    }
}

If正在工作,但是您的病情总是得到false,因为您使用的是Integer而不是原始int。请注意,当您使用对象时,将它们与.equals()方法而不是==进行比较。

因此:

if (firstPointX.equals(afterPointX) && firstPointY.equals(afterPointY)) {
    //your code...
}

有关==Object.equals()方法之间的区别,请参阅此信息。

,如注释中所述,您可以始终将int用于此目的,而不是Integer

Integerint

,请参阅此信息。

您正在比较两个对象内存地址,即Integer对象(包装程序类(。

if (firstPointX == afterPointX && firstPointY == afterPointY) 

您想做的是比较这两个对象中的值。为此,您需要像以下内容一样使用:

if (firstPointX.equals(afterPointX) && firstPointY.equals(afterPointY))

包装/覆盖类:

  • 每个原始数据类型都有一个包装类。
  • 原始类型是出于绩效原因而使用的(对您来说更好程序(。
  • 无法使用原始类型创建对象。
  • 允许一种创建对象和操纵基本类型的方法(即。转换类型(。

exsample:

Integer - int
Double - double

相关内容

  • 没有找到相关文章

最新更新