I need help about java.lang.IndexOutOfBoundsException - ArrayList -


i'm doing project guitar hero clone. when running game (just concept) error occurred: java.lang.indexoutofboundsexception.

package tapnstrum2;  import java.awt.*; import java.awt.event.*; import java.io.filenotfoundexception; import java.util.arraylist; import javax.swing.*;  public class string1 extends jframe implements actionlistener { image s1; gnode g; playig p; int m =0;  public string1(){     imageicon s1i = new imageicon("d:\\javaproject\\graphic-library\\buttons\\string01.png");     s1 = s1i.getimage(); } public image getimage(){     return s1; }  public void keypressed(keyevent e) throws filenotfoundexception, interruptedexception{     arraylist gnodes = p.getgnodes();     gnode gn = (gnode) gnodes.get(m);     int key = e.getkeycode();     imageicon s1iexact = new imageicon("d:\\javaproject\\graphic-library\\buttons\\string01_exact.png");     imageicon s1imissed = new imageicon("d:\\javaproject\\graphic-library\\buttons\\string01_missed.png");     if (key == keyevent.vk_f1){         (int i=0; i< gnodes.size(); i++){         if (gn.gety()+47>=380 && gn.gety()+47<=420)             s1 = s1iexact.getimage();         else             s1 = s1imissed.getimage();         }     }     m++; if (m>=gn.size())  m=0; } public void keyreleased(keyevent e){         int key = e.getkeycode();         imageicon s1i = new imageicon("d:\\javaproject\\graphic-library\\buttons\\string01.png");         if (key == keyevent.vk_f1){            s1 = s1i.getimage();         } }  @override public void actionperformed(actionevent ae) {     repaint(); } 

}

i tried bounds of images form arraylist has been read simple text file contains 0 or 1 each line (1 drawimage , 0 not to) , check bounds. error has index may equal how many time pressed f1. although tried put condition m in last lines.

update error message:

exception in thread "awt-eventqueue-0" java.lang.indexoutofboundsexception: index: 3, size: 2     @ java.util.arraylist.rangecheck(arraylist.java:653)     @ java.util.arraylist.get(arraylist.java:429)     @ tapnstrum2.string1.keypressed(string1.java:28)     @ tapnstrum2.playig$al.keypressed(playig.java:98)     @ java.awt.component.processkeyevent(component.java:6483)     @ javax.swing.jcomponent.processkeyevent(jcomponent.java:2832)     @ java.awt.component.processevent(component.java:6302)     @ java.awt.container.processevent(container.java:2234)     @ java.awt.component.dispatcheventimpl(component.java:4881)     @ java.awt.container.dispatcheventimpl(container.java:2292)     @ java.awt.component.dispatchevent(component.java:4703)     @ java.awt.keyboardfocusmanager.redispatchevent(keyboardfocusmanager.java:1954)     @ java.awt.defaultkeyboardfocusmanager.dispatchkeyevent(defaultkeyboardfocusmanager.java:806)     @ java.awt.defaultkeyboardfocusmanager.predispatchkeyevent(defaultkeyboardfocusmanager.java:1074)     @ java.awt.defaultkeyboardfocusmanager.typeaheadassertions(defaultkeyboardfocusmanager.java:945)     @ java.awt.defaultkeyboardfocusmanager.dispatchevent(defaultkeyboardfocusmanager.java:771)     @ java.awt.component.dispatcheventimpl(component.java:4752)     @ java.awt.container.dispatcheventimpl(container.java:2292)     @ java.awt.window.dispatcheventimpl(window.java:2750)     @ java.awt.component.dispatchevent(component.java:4703)     @ java.awt.eventqueue.dispatcheventimpl(eventqueue.java:758)     @ java.awt.eventqueue.access$500(eventqueue.java:97)     @ java.awt.eventqueue$3.run(eventqueue.java:709)     @ java.awt.eventqueue$3.run(eventqueue.java:703)     @ java.security.accesscontroller.doprivileged(native method)     @ java.security.protectiondomain$1.dointersectionprivilege(protectiondomain.java:75)     @ java.security.protectiondomain$1.dointersectionprivilege(protectiondomain.java:86)     @ java.awt.eventqueue$4.run(eventqueue.java:731)     @ java.awt.eventqueue$4.run(eventqueue.java:729)     @ java.security.accesscontroller.doprivileged(native method)     @ java.security.protectiondomain$1.dointersectionprivilege(protectiondomain.java:75)     @ java.awt.eventqueue.dispatchevent(eventqueue.java:728)     @ java.awt.eventdispatchthread.pumponeeventforfilters(eventdispatchthread.java:201)     @ java.awt.eventdispatchthread.pumpeventsforfilter(eventdispatchthread.java:116)     @ java.awt.eventdispatchthread.pumpeventsforhierarchy(eventdispatchthread.java:105)     @ java.awt.eventdispatchthread.pumpevents(eventdispatchthread.java:101)     @ java.awt.eventdispatchthread.pumpevents(eventdispatchthread.java:93)     @ java.awt.eventdispatchthread.run(eventdispatchthread.java:82) 

you can download project here if there useful https://mega.co.nz/#f!ql80jdky!fm91p7phb7lfhts75rsk-q

you need check m less size of gnodes arraylist in line:

gnode gn = (gnode) gnodes.get(m); //netbeans inform line contain error 

the error indicates m outside bounds of arraylist, means it's either equal or greater length of arraylist, or it's less 0.

for example,

when m 3 , arraylist [x, y, z]

gnodes.get(m) attempts value after z, doesn't exist , causes java throw exception.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -