Java: l'instruction if peut être simplifiée (la boîte contient un point)


J'ai l'instruction suivante pour vérifier si un Vector2D est dans une boîte, et IntelliJ me donne un avertissement: "si la déclaration peut être simplifiée".

if(point.x < minX || point.x > maxX || point.y < minY || point.y > maxY)
    return false;

Comment puis-je simplifier cela?

Author: Captain Skyhawk, 2013-10-17

4 answers

Je ne vois aucune simplification possible. Je voudrais juste ignorer l'avertissement.


Mise à jour: Cependant, si votre méthode ressemble à ceci:

if(point.x < minX || point.x > maxX || point.y < minY || point.y > maxY)
    return false;
return true;

Vous pouvez le changer en ceci:

return !(point.x < minX || point.x > maxX || point.y < minY || point.y > maxY);

Ou même:

return point.x >= minX && point.x <= maxX && point.y >= minY && point.y <= maxY;

Je ne sais pas si c'est "simplifié" pour les humains.

 12
Author: Martijn Courteaux, 2013-10-17 18:16:57

Chaque fois qu'IntelliJ met en garde contre une possible simplification, il propose souvent d'effectuer la simplification (en cliquant sur l'ampoule jaune). Que se passe - t-il si vous faites ça?

 3
Author: MrBackend, 2013-10-17 18:26:08

Essayez de le séparer en deux instructions if: une pour les coordonnées "x", une pour "y".

if(point.x < minX || maxX < point.x)
    return false;
else if(point.y < minY || maxY < point.y)
    return false;
 0
Author: Stanislav Mamontov, 2013-10-17 18:26:04

Peut-être que vous pourriez essayer quelque chose comme ceci:

return new Rectangle(minX, maxX, minY, maxY).contains(point);

En ce qui concerne la simplification du point de vue de l'algèbre booléenne, vous devez rechercher la réponse de Martin. En fait, vous n'avez même pas besoin de le simplifier, car le compilateur fera automatiquement pour vous. Par exemple, !(a && b) simplifiera en !a || !b car il est plus rapide de vérifier chaque variable séparément que de créer une variable temporaire et de vérifier la valeur de celle-ci.

 0
Author: Josh M, 2013-10-17 18:26:19