我有问题。我在double
上更改了Integer
,但我有这个错误:
无法在基本类型double
上调用intValue()
感谢您的帮助!
import java.awt.AWTException;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.PointerInfo;
import java.awt.Robot;
public class Clicker {
void SetX(int xCoordinate) {
this.xCoordinate = xCoordinate;
}
void SetY(int yCoordinate) {
this.yCoordinate = yCoordinate;
}
static int xCoordinate= 30;
static int yCoordinate = 40;
public static void main (String[] args) {
PointerInfo inf = MouseInfo.getPointerInfo();
Point p = inf.getLocation();
System.out.println(p.getX());
int xzCoordinate = p.getX().intValue();
}
}
答案 0 :(得分:0)
使用:
Math.floor(p.getX())
Math.ceil(p.getX())
或
Math.round(p.getX())
取决于哪一个适合你。
答案 1 :(得分:0)
您的代码中没有强制转换。
getX()
似乎返回原始double
,编译器会告诉您无法在intValue()
上调用double
。
因此使用演员
int xzCoordinate = (int)p.getX();
或Math
提供的一种舍入方法(参见@Zircon的回答)
答案 2 :(得分:0)
这不是如何将原始double
转换为int
。 Java的Point
对象将其值存储为int
,但由于某种原因,getter方法返回double
s。您可以将getX()
投射到int
int xzCoordinate = (int) p.getX();
或者您可以使用public
字段。
int xzCoordinate = p.x;