java中的函数未完成

java中的函数未完成,java,Java,您好 这是我的第一个问题,我只是把编程作为一种爱好,所以当我试图帮助我时,请记住这一点 我有一个函数,它试图读取十字线的中心点。有点像游戏中的定位仪。代码如下所示: public static Point location(BufferedImage image) { int pixelLeft; int pixelTop; Point point = new Point(); for (int i = Main.RADAR_TO

您好

这是我的第一个问题,我只是把编程作为一种爱好,所以当我试图帮助我时,请记住这一点

我有一个函数,它试图读取十字线的中心点。有点像游戏中的定位仪。代码如下所示:

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;
    }
公共静态点位置(BuffereImage图像){
int像素左;
整数像素;
点=新点();
对于(int i=Main.RADAR\u TOP+1;i>16)和0xff)>35&&
((像素左>>8)和0xff)>35&&
((像素左)和0xff)>35)){
点y=i;
打破
}
}
对于(int j=Main.RADAR_LEFT+1;j>16)和0xff)>35和
((像素顶部>>8)和0xff)>35&&
((像素顶部)和0xff)>35)){
点x=j;
打破
}
}
System.out.println(“位置:“+point.x+”,“+point.y”);
/**lastX=点x;
lastY=点y*/
返回点;
}
发生的情况是,有时,此函数只是不将控制返回给主应用程序。基本上,它在运行时会被卡住。因此,函数中的最后一条注释要进行检查。我首先认为它可能与读取函数所在的类的静态成员有关,因此我将这些成员注释掉,正如您在最后看到的那样。但问题仍然存在


我真的看不出或想不出这种行为的任何原因。我将非常感谢任何可能指出我的错误的想法或评论。

你确定Main.RADAR\u TOP小于Main.RADAR\u BOTTOM吗?
否则forloop应该旋转一段时间(很长一段时间)

问题是location函数被第二个函数调用,而第二个函数在case语句中,我错过了中断。这就是应用程序“卡住”的原因。

您试过注释代码的其他部分吗?我通常会怀疑这些循环,但乍一看它们看起来还行……使用调试器、逐步完成代码、插入断点、监视值等。这些都是强大的调试工具,现在是学习如何使用它们的好时机。@Juan-那么问题真的在别处,然后不是这个方法冻结了你的应用程序。Andread_D,你完全正确,你的评论让我跳出了框框(在本例中,框框就是这个函数)。问题是location函数是由第二个函数调用的,而第二个函数在case语句中,我错过了中断。这就是应用程序“卡住”的原因。非常感谢你和所有其他人的帮助。我真的很感谢你花时间研究我的问题@既然你知道了,为什么你不自己提供正确的答案呢。两天后,您将能够接受该问题,从而将该问题标记为已回答。(并且可能获得一两张赞成票)