2016-04-20 12 views
-1

ich ein Problem habe. Ich würde double auf Integer ändern, aber ich habe diesen Fehler:Kann nicht werfen doppelt auf Integer in Java

Cannot invoke intValue() on the primitive type double

Dank für die Hilfe!

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

Oder dieses http://stackoverflow.com/questions/8631652/strange-behaviour-with-object-intvalue (vielleicht besser) – Tunaki

Antwort

0

Verwendung: Math.floor(p.getX()) Math.ceil(p.getX()) oder Math.round(p.getX()) je nachdem, welches zu Ihnen passt.

0

Es gibt keine Besetzung in Ihrem Code.

getX() scheint eine primitive double und der Compiler sagt Ihnen zurückkehren, dass Sie nicht intValue() auf einem double aufrufen kann.

Deshalb verwenden, um eine Guss

int xzCoordinate = (int)p.getX(); 

oder eine der Rundung von Math bereitgestellten Verfahren (siehe Antwort von @Zircon)

0

Das ist nicht, wie man ein primitives double zu einem int zu konvertieren. Java Point Objekte speichern ihre Werte als int s, aber aus irgendeinem Grund kehren die Getter-Methoden double s. Sie können getX() zu einem int

int xzCoordinate = (int) p.getX(); 

werfen Oder Sie können einfach das Feld verwenden, die public ist.

int xzCoordinate = p.x;