Salutations,Fonction en java ne se termine pas
ceci est ma première question et je fais juste la programmation comme un passe-temps donc garder à l'esprit que lorsque vous essayez de me aider, s'il vous plaît.
J'ai une fonction qui essaie de lire le point central d'un réticule. Quelque chose comme un localisateur de position dans un jeu. Le code ressemble à ceci:
public static Point location(BufferedImage image) {
int pixelLeft;
int pixelTop;
Point point = new Point();
for (int i = Main.RADAR_TOP+1; i < Main.RADAR_BOTTOM; i++) {
pixelLeft = image.getRGB(Main.RADAR_LEFT+7, i);
if ((((pixelLeft>>16) & 0xff) > 35 &&
((pixelLeft>>8) & 0xff) > 35 &&
((pixelLeft) & 0xff) > 35)){
point.y = i;
break;
}
}
for (int j = Main.RADAR_LEFT+1; j < Main.RADAR_RIGHT; j++) {
pixelTop = image.getRGB(j, Main.RADAR_TOP+5);
if ((((pixelTop>>16) & 0xff) > 35 &&
((pixelTop>>8) & 0xff) > 35 &&
((pixelTop) & 0xff) > 35)){
point.x = j;
break;
}
}
System.out.println("location: "+point.x+","+point.y);
/** lastX = point.x;
lastY = point.y;*/
return point;
}
Ce qui se passe est que parfois, cette fonction ne fonctionne tout simplement pas le contrôle à retourner l'application principale. Fondamentalement, il reste coincé en cours d'exécution. Par conséquent, le dernier commentaire dans la fonction pour faire une vérification. J'ai d'abord pensé que cela avait peut-être quelque chose à voir avec la lecture des membres statiques de la classe où réside la fonction, alors j'ai commenté ceux-ci comme vous pouvez le voir à la fin. Le problème se produit quand même.
Je ne peux pas vraiment voir ou penser à aucune raison pour ce comportement. J'apprécierai beaucoup les idées ou les commentaires qui pourraient me signaler une erreur ou quelque chose.
Avez-vous essayé de commenter d'autres parties du code? Je suspecterais normalement les boucles, mais elles ont l'air correct à première vue ... – Stephen
en fonction de la taille de votre image, cela peut simplement être très lent. Avez-vous essayé de placer un System.out.println dans les boucles et de voir si ça s'arrête vraiment ou s'il fonctionne depuis très longtemps? – Nicolas78
aussi, quelles sont les valeurs de RADAR_ [BOTTOM, ...], et quelle est la taille de votre image? Y a-t-il une chance que vous commenciez à rechercher des valeurs RVB en dehors de vos dimensions d'image réelles? Je pourrais faire une image qui pourrait bloquer le programme si quelque chose ne va pas très bien. – Nicolas78