2016-04-20 48 views
-1

我遇到問題。我會改變對Integerdouble但我有此錯誤:無法在Java中將Double轉換爲整數

Cannot invoke intValue() on the primitive type double

感謝您的幫助!

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

或這一個http://stackoverflow.com/questions/8631652/strange-behaviour-with-object-intvalue(也許更好) – Tunaki

回答

0

用途: Math.floor(p.getX()) Math.ceil(p.getX())Math.round(p.getX()) 取決於哪個適合你。

0

代碼中沒有強制轉換。

getX()似乎返回原始double並且編譯器告訴您,您不能調用double上的intValue()

因此使用強制

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

或由Math提供的舍入方法之一(見@Zircon的回答)

0

這不是如何將原始double轉換爲int。 Java的Point對象將其值存儲爲int s,但由於某些原因,getter方法返回double s。你可以投getX()int

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

或者你可以只使用領域,這是public

int xzCoordinate = p.x; 
相關問題