返回外部方法错误

时间:2012-02-16 02:25:51

标签: java methods return

boolean openingboard;
{   
Robot robot = new Robot();
Color color3 = new Color(108, 25, 85);
Rectangle rectangle = new Rectangle(0, 0, 1365, 770);
    while(true)
    {
    BufferedImage image = robot.createScreenCapture(rectangle);
    search: for(int x = 0; x < rectangle.getWidth(); x++)
        {
        for(int y = 0; y < rectangle.getHeight(); y++)
            {
                if(image.getRGB(x, y) == color3.getRGB())
                {
                    System.out.println("About to finish and return true");
                    return true;
                }
                System.out.println("About to finish and return false");
            }
        }
    }
}

错误是: java:71:返回外部方法

返回true

^

我不知道这是怎么回事请帮助!

2 个答案:

答案 0 :(得分:10)

从上面的评论回复中,我将做出有根据的猜测,你相信

boolean openingboard;
{
    return true;
}

定义了一个名为openingboard的Java方法。事实并非如此。 Java遵循C范例,要求您在括号中指定参数,无论您是否有任何参数。所以,方法

boolean openingboard() {
    return true;
}

是一个有效的Java方法(假设它在某个类中),openingboard的版本在大括号之间有更多的代码。

那就是说,我将传递一些关于Java风格的友好指针:

  • Java(实际上是大多数高级语言)程序员倾向于对while (true)这样的“永远”循环不满,因为这些循环使得确定循环何时实际停止变得更加困难。
  • 代码中不需要标签search,标签甚至比永久循环更劝阻。

所以,我建议重写你的代码看起来像

private boolean openingboard() {
    Robot robot = new Robot();
    Color color3 = new Color(108, 25, 85);
    Rectangle rect = new Rectangle(0, 0, 1365, 770);
    BufferedImage image = robot.createScreenCapture(rect);
    for(int x = 0; x < rectangle.getWidth(); x++) {
        for(int y = 0; y < rectangle.getHeight(); y++) {
            if(image.getRGB(x, y) == color3.getRGB())
                return true;
        }
    }

    return false;
}

当然假设您更喜欢使用调试器来跟踪打印。

答案 1 :(得分:4)

正确的方法如下:boolean openingboard ( )

不喜欢boolean openingboard;

括号不是可选的。

你拥有它的方式:openboard是一个领域。有一个带有Robot和颜色的init块,还有一些用于嵌套在彼此内部的循环。其中一个for循环是一个返回,在init块中是不允许的。