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
Post a Comment