无法在Java中将Double转换为Integer

时间:2016-04-20 19:53:53

标签: java integer double

我有问题。我在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();
    }
}

3 个答案:

答案 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;