java - ArrayList 和异常 java.lang.ArrayIndexOutOfBoundsException 上的“for”函数的操作
问题描述
我的代码有问题。我在 ArrayLists 上写了一个简单的操作并有一个异常。下面是我的代码:
for (int i=0;i<Core.Config.amountInclu;i++) {
Random r = new Random();
x = r.nextInt(this.tabSizeX);
y = r.nextInt(this.tabSizeY);
Pkt nowy = new Pkt(x,y);
while(newPkt.contains(nowy) || onBoundary(x,y)==false){
x = r.nextInt(this.tabSizeX);
y = r.nextInt(this.tabSizeY);
}
for(int j = 0; j<Core.Config.sizeInclu;j++){
for(int k = 0; k<Core.Config.sizeInclu;j++){
if((x+j)<tabSizeX && (y+k)<tabSizeY){
this.P[x+j][y+k].set_black();
newPkt.add(nowy);
}
}
}
}
运行此代码后,我有一个例外:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -2147483648
at growth_1.Plansza.addInclusion(Plansza.java:661)
at growth_1.Display$18.mouseClicked(Display.java:399)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
at java.awt.Component.processMouseEvent(Component.java:6542)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4544)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
该算法非常简单,我们在 JPanel (x,y) 上画一个点并检查它是否已被使用以及它是否在更大单元格的边界上。如果是,我们必须画另一点。然后我们必须将点和相邻点设置为黑色。我以为我检查了所有条件以保护点越界。
如果您能给我一些建议,我将不胜感激。
解决方案
我只能假设,这个问题是因为在声明中
for(int k = 0; k<Core.Config.sizeInclu;j++)...
您有复制粘贴错误:j++ 而不是 k++
推荐阅读
- r - 在 geostat R 中使用 krige.cv() 的交叉验证错误:尺寸不匹配:位置 400 和数据 201
- c++ - clang-format:将系统包含与标准库包含和外部包含分开
- python - WeasyPrint 在保存的 PDF 文件中不显示 PNG(Flask 应用程序)
- node.js - 为什么 socket 发射工作但 io.in 发射不工作?
- google-sheets - 在 Google 表格中返回列标题而不是 TRUE 或 FALSE 值
- html - Visual Studio Code 还原操作中的奇怪错误
- python - 用中文列名访问sqlalchemy中的表
- python - 如何正确使用 strip() 类型?
- reactjs - 每个子列表应该有一个唯一的“关键”道具警告?
- database - NLP 增强库