2010-11-25 7 views
2

Salut J'ai une interface utilisateur qui dispose d'un panneau et vous pouvez utiliser votre souris pour puting certains points et il est son code:ayant une double valeur pour les points

double x = evt.getX(); 
    double y = evt.getY() + 20; 
    Graphics g = getGraphics(); 
    g.setColor(Color.black); 
    g.fillOval((int) x, (int) y, 10, 10); 
    Point point = new Point(x, y); 
    pointList.add(point); 

que vous voyez mon « x » champ et "y" champ a double type mais quand j'imprime ces points, leur valeur sera int, comment puis-je conserver leur valeur et les utiliser dans mes fonctions avec double type. quand je les imprimer:

[120.0 ,134.0] 
[345.0,785.0] 

Répondre

4

Les positions sur le panneau vont toujours être entiers, parce que ce retour getX et getY. Vous ne pouvez pas cliquer sur un demi-pixel. ;)

Ce que vous avez enregistré est en fait un double. C'est pourquoi il est écrit "120.0" plutôt que "120". Si vous stockez un entier dans un type à virgule flottante (comme un double), alors il est stocké comme l'équivalent en virgule flottante de cet entier (ce qui équivaut à mettre ".0" à la fin). Parce que la valeur que vous y stockez sera toujours un entier, vous allez toujours vous retrouver avec un nombre entier dans vos doubles (à moins que vous ne fassiez d'autres traitements mathématiques qui les font changer)

+0

Vous voulez dire que l'utilisation d'un double type pour ces points est inutile? – user472221

+0

également dans les opérations arithmétiques comme moins il retournera le type int ou c'est-à-dire, 0,23? – user472221

+0

@ user472221, compte tenu de votre exemple de code, avoir des doubles est inutile. Si vous avez l'intention d'utiliser ces valeurs dans des calculs où les problèmes d'arrondi peuvent être importants, il est utile d'avoir des doubles. – Erica

0

vos doubles valeurs sont rejetterait en entiers. Si vous n'écrivez pas votre propre méthode toString (peut-être en étendant Point), vous ne pouvez rien y faire.

Questions connexes