【发布时间】:2012-02-01 02:21:40
【问题描述】:
这是我现在拥有的代码,它编译得很好,但是当我尝试运行它时会出现上述错误。
import java.awt.*;
import java.awt.event.*;
import java.awt.Robot;
import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Color;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
public class GunningBot {
public static void main(String[] args) throws Exception {
Robot robot = new Robot();
Color color1 = new Color(195, 174, 196);
{
Rectangle rectangle = new Rectangle(0, 0, 1075, 700);
{
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) == color1.getRGB()) {
robot.mouseMove(x, y);
break search;
}
}
}
}
}
robot.delay(0);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.delay(0);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(15);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.delay(0);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(1500);
robot.mouseMove(510, 440); //DO THIS BOTTOM LEFT
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(500, 140); //MOVE TO LEFT 5 PXLS
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(250);
robot.mouseMove(500, 370); //DO THIS TOP RIGHT
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(510, 370); //MOVE TO RIGHT 5 PXLS
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(250);
robot.mouseMove(700, 440); //DO THIS RIGHT CORNER MOVE LEFT 5
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(690, 440); //MOVE TO LEFT 5 PXLS
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(250);
robot.mouseMove(315, 370); //DO THIS LEFT CORNER MOVE RIGHT 5
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(320, 370); //MOVE TO RIGHT 5 PXLS
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
}
我发现了很多关于过度扩展数组等的示例修复,但我不使用数组。所以我不明白如何修复这个脚本的这个错误。任何帮助都会很棒。
完整的错误是:
线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 0 在 GunningBot.main(GunningBot.java:39)
bufferimage 使用光栅,这可能是问题吗? rectangle 只是设置屏幕的矩形来获取屏幕截图。
另外我正在用 Notepad++ 编辑代码,不知道如何在没有 eclipse 的情况下设置异常。
【问题讨论】:
-
堆栈跟踪是什么样的?这将告诉您是什么引发了异常。 BufferedImage 或 Rectangle 很可能在内部使用了一个数组,而您的一个调用(如
image.getRGB(x,y)或robot.mouseMove(x,y))正在导致它......但如果您能告诉我们,它会节省很多时间。 -
你能稍微清理一下你的代码吗?你有额外的大括号,奇怪的间距使它很难阅读。我还怀疑您获得数组索引超出范围异常的原因可能是由于范围问题。
标签: java arrays exception awt indexoutofboundsexception