Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“线程中的异常”;AWT-EventQueue-0“;java.lang.ArrayIndexOutofBounds异常:库存为10_Java_Arrays_Windows_Applet_Indexoutofboundsexception - Fatal编程技术网

“线程中的异常”;AWT-EventQueue-0“;java.lang.ArrayIndexOutofBounds异常:库存为10

“线程中的异常”;AWT-EventQueue-0“;java.lang.ArrayIndexOutofBounds异常:库存为10,java,arrays,windows,applet,indexoutofboundsexception,Java,Arrays,Windows,Applet,Indexoutofboundsexception,我一直在关注一个关于制作2D游戏的在线教程,但希望能进一步扩展。当我试着在库存中移动物品时,一切都在进行中。我可以成功地拾取物品并将其放回invBar,但它不允许我将其放入库存invBag中。我跟踪了他检查过的所有内容,但由于某种原因,他没有发现错误 我是一个初学者,到目前为止,我知道这个错误是由数组“越界”造成的(正如错误的标题明显提到的),但我不知道它“如何”越界 编辑:我是个白痴。。。出于某种原因,我一直在键入1,而不是出于某种dum原因键入I,显然这就是问题所在 存货代码: packag

我一直在关注一个关于制作2D游戏的在线教程,但希望能进一步扩展。当我试着在库存中移动物品时,一切都在进行中。我可以成功地拾取物品并将其放回invBar,但它不允许我将其放入库存invBag中。我跟踪了他检查过的所有内容,但由于某种原因,他没有发现错误

我是一个初学者,到目前为止,我知道这个错误是由数组“越界”造成的(正如错误的标题明显提到的),但我不知道它“如何”越界

编辑:我是个白痴。。。出于某种原因,我一直在键入1,而不是出于某种dum原因键入I,显然这就是问题所在

存货代码:

package y.m.m //to protect project name

import java.awt.*;
import java.awt.event.*;

public class Inventory {
public static Cell[] invBar = new Cell[Tile.invLength];
public static Cell[] invBag = new Cell[Tile.invLength * Tile.invHeight];

public static boolean isOpen = false;
public static boolean isHolding = false;

public static int selected = 0;
public static int[] holdingID = Tile.air;
public static int holdingCount = 0;

public Inventory() {
    for(int i = 0; i < invBar.length; i++) {
        invBar[i] = new Cell(new Rectangle((Component.pixel.width / 2) - ((Tile.invLength * (Tile.invCellSize + Tile.invCellSpace))/2) + (i * (Tile.invCellSize + Tile.invCellSpace)), Component.pixel.height - (Tile.invCellSize + Tile.invBorderSpace), Tile.invCellSize, Tile.invCellSize), Tile.air);
    }

    int x = 0, y = 0;
    for(int i = 0; i < invBag.length; i++) {
        invBag[i] = new Cell(new Rectangle((Component.pixel.width / 2) - ((Tile.invLength * (Tile.invCellSize + Tile.invCellSpace))/2) + (x * (Tile.invCellSize + Tile.invCellSpace)), Component.pixel.height - (Tile.invCellSize + Tile.invBorderSpace) - (Tile.invHeight * (Tile.invCellSize + Tile.invCellSpace)) + (y * (Tile.invCellSize + Tile.invCellSpace)), Tile.invCellSize, Tile.invCellSize), Tile.air);

        x++;
        if(x == Tile.invLength) {
            x = 0;
            y++;
        }
    }

    invBar[0].id = Tile.sand;
    invBar[1].id = Tile.grass;
    invBar[2].id = Tile.dirt;
    invBar[3].id = Tile.bush;
}

public static void click(MouseEvent e) {
    if(e.getButton() == 1) {
        if(isOpen) {
            for(int i = 0; 1 < invBar.length; i++) {
            Line 43 > if(invBar[i].contains(new Point(Component.mse.x / Component.pixelSize, Component.mse.y / Component.pixelSize))) {
                    if(invBar[i].id != Tile.air && !isHolding) {
                        holdingID = invBar[i].id;
                        invBar[i].id = Tile.air;

                        isHolding = true;
                    } else if(isHolding && invBar[i].id == Tile.air) {
                        invBar[i].id = holdingID;

                        isHolding = false;
                    } else if(isHolding && invBar[i].id != Tile.air) {
                        int[] con = invBar[i].id;
                        invBar[i].id = holdingID;
                        holdingID = con;
                    }
                }
            }


            for(int i = 0; 1 < invBag.length; i++) {
                if(invBag[i].contains(new Point(Component.mse.x / Component.pixelSize, Component.mse.y / Component.pixelSize))) {
                    if(invBag[i].id != Tile.air && !isHolding) {
                        holdingID = invBag[i].id;
                        invBag[i].id = Tile.air;    

                        isHolding = true;
                    } else if(isHolding && invBag[i].id == Tile.air) {
                        invBag[i].id = holdingID;   

                        isHolding = false;
                    } else if(isHolding && invBag[i].id != Tile.air) {
                        int[] con = invBag[i].id;

                        invBag[i].id = holdingID;
                        holdingID = con;
                    }
                }
            }
        }
    }
}

public void render(Graphics g) {
    for(int i = 0; i < invBar.length; i++) {
        boolean isSelected = false;
        if(i == selected) {
            isSelected = true;
        }

        invBar[i].render(g, isSelected);
    }

    if(isOpen) {
        //g.fillRect(0, 0, 100, 100);
        for(int i = 0;i < invBag.length; i++) {
            invBag[i].render(g, false);
        }
    }

    if(isHolding) {
        // [- (Tile.invCellSize / 2)] centers item to mouse
        g.drawImage(Tile.tileset_terrain, (Component.mse.x / Component.pixelSize) - (Tile.invCellSize / 2) + Tile.invItemBorder, (Component.mse.y / Component.pixelSize) - (Tile.invCellSize / 2) + Tile.invItemBorder, (Component.mse.x / Component.pixelSize) - (Tile.invCellSize / 2) + Tile.invCellSize - Tile.invItemBorder, (Component.mse.y / Component.pixelSize) - (Tile.invCellSize / 2) + Tile.invCellSize - Tile.invItemBorder, holdingID[0] * Tile.tileSize, holdingID[1] * Tile.tileSize, holdingID[0] * Tile.tileSize + Tile.tileSize, holdingID[1] * Tile.tileSize + Tile.tileSize, null);
    }
}
}
生成的错误:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 10
at y.m.m.Inventory.click(Inventory.java:43)
at y.m.m.Listening.mousePressed(Listening.java:158)
at java.awt.Component.processMouseEvent(Component.java:6502)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

在您的for循环中,您拥有

int i = 0; 1 < invBag.length; i++
inti=0;1<袋长;我++
由于
1
始终为真,因此IndexOutOfBoundException

int i = 0; 1 < invBag.length; i++