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
^
我不知道这是怎么回事请帮助!
答案 0 :(得分:10)
从上面的评论回复中,我将做出有根据的猜测,你相信
boolean openingboard;
{
return true;
}
定义了一个名为openingboard
的Java方法。事实并非如此。 Java遵循C范例,要求您在括号中指定参数,无论您是否有任何参数。所以,方法
boolean openingboard() {
return true;
}
是一个有效的Java方法(假设它在某个类中),openingboard
的版本在大括号之间有更多的代码。
那就是说,我将传递一些关于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块中是不允许的。