OK, donc je fais une affectation pour une classe Java et une partie de l'affectation consiste à déterminer si un point est dans les dimensions d'un rectangle. J'ai donc créé ce code: J'ai créé un code> classe code>, c'est pourquoi j'ai demandé un paramètre L'emplacement du point est (6,7). Le point, la largeur et la hauteur du rectangle 1 sont (4,5), 9 et 3, respectivement. Je sais pour un fait que ce point est à l'intérieur du premier rectangle, mais le relevé ps C'est tout le travail de la console, je ne traite pas de la programmation graphique ou graphique. P> p> Point P code>. Pour tester ce boolean code> j'ai créé un simple si code> instruction dans ma classe principale: p> println code> n'est pas affiché, ce qui signifie qu'il doit y avoir un problème avec le booléen code> j'ai créé mais je n'ai pas 't voir une erreur, peut-être que ma tête est nuageuse mais que quelqu'un peut-il signaler à moi ce qui ne va pas ici? p>
4 Réponses :
Généralement lors de la gestion des graphiques de l'ordinateur, le point supérieur gauche est (0,0) et le coin inférieur droit est (largeur, hauteur). P>
Cela signifie que vous devriez inverser vos conditions p>
Pas de chance, peut-être que cela vaut la peine de mentionner que je ne traite pas de graphiques, c'est tout le travail de la console.
Quelle que soit l'orientation, les conditions impliquées restent les mêmes.
ça va bien pour moi. Je vérifierais que votre cas de test a réellement les chiffres que vous pensez. Je vérifierais également que vos accesseurs renvoient toutes les bonnes valeurs (je ne peux pas vous dire le nombre de fois que j'ai implémenté GetX () comme {Retour this.y;}). Autre que cela, c'est que quiconque devine. P>
Merci, il y avait une partie dans mon code où j'ai mélangé la largeur et les valeurs de hauteur d'un point, au lieu de x pour la largeur et y pour la hauteur, j'avais y pour la largeur et x pour la hauteur.
@MASTRAGAMR C'est la raison de la suivante de l'une des règles principales - Vous devez nommer vos champs et vos méthodes avec nom montrant Thier Usage b>, donc, PLZ, essayez int largeur code> à la place de code> à la place de < Code> int x code>
Le rectangle AWT a déjà la tâche semble sur le point de savoir à quel point la nommée espaces conflit. Par exemple, si vous êtes paresseux (c'est l'une des qualités les plus admirées d'un programmeur), vous pouvez écrire: p> Vous ne souhaitez généralement pas réimplémenter les fonctionnalités ni étendre les classes . p> p> contient la méthode code>. ( lien )
Puis-je savoir pourquoi vous ne voudriez pas étendre des cours?
Ceci n'est pas applicable dans la plupart des cas car il ne prend pas en charge les valeurs de points flottants.
Bien que sa méthode naïf, j'ai essayé le concept suivant:
si le point J'ai une image pour la même chose, mais en raison de la mauvaise réputation (comme je suis un débutant ), ne peut pas la poster. P> Quand je la formulais de cela dans le code Java réel, je devais gérer une situation où
La valeur de la zone avec une partie décimale ayant 15 9 personnes a été arrondi à son entier le plus proche. P> Reportez ce code: P> (px, py) est à l'intérieur du rectangle donné, la somme des zones de triangles formées en joignant 2 rectangles points et le point donné (disons dans le sens anti-horaire ou dans le sens des aiguilles d'une montre) serait égal à la somme du rectangle. p> import static java.lang.Math.sqrt;
public class PointInsideRect
{
private static double square(double n)
{
return n*n;
}
private static double areaOfTriangle(
int xa, int ya,
int xb, int yb,
int px, int py )
{
double side1 = sqrt(square(ya-yb) + square(xa-xb));
double side2 = sqrt(square(ya-py) + square(xa-px));
double side3 = sqrt(square(yb-py) + square(xb-px));
double semi_perimeter = (side1 + side2 + side3) / 2;
return sqrt(semi_perimeter
* ( semi_perimeter - side1 )
* ( semi_perimeter - side2 )
* ( semi_perimeter - side3 ));
}
private static double areaOfRect(
int x1, int y1,
int x2, int y2,
int x3, int y3,
int x4, int y4 )
{
double side1 = sqrt(square(y1-y2) + square(x1-x2));
double side2 = sqrt(square(y2-y3) + square(x2-x3));
return side1 * side2;
}
public boolean check(
int x1, int y1,
int x2, int y2,
int x3, int y3,
int x4, int y4,
int pointX, int pointY)
{
double tri1Area = areaOfTriangle(x1,y1, x2,y2, pointX,pointY);
double tri2Area = areaOfTriangle(x2,y2, x3,y3, pointX,pointY);
double tri3Area = areaOfTriangle(x3,y3, x4,y4, pointX,pointY);
double tri4Area = areaOfTriangle(x4,y4, x1,y1, pointX,pointY);
double rectArea = areaOfRect(x1,y1, x2,y2, x3,y3, x4,y4);
double triAreaSum = tri1Area + tri2Area + tri3Area+ tri4Area;
if(triAreaSum % Math.pow(10, 14) >= 0.999999999999999)
{
triAreaSum = Math.ceil(triAreaSum);
System.out.println(triangleAreaSum);
}
return triAreaSum == rectArea;
}
public static void main(String[] args)
{
PointInsideRect inRect = new PointInsideRect();
System.out.println(inRect.check(1,1, 1,3, 3,3, 3,1, 2,2));
}
}
Related: Stackoverflow.com/Questtions/2752725/...
Je ne pense pas que ce soit lié. Je pense que c'est une tâche de débogage pour notre bon élève.
Pouvez-vous publier votre méthode getLocation?