Index out of bounds error
Ich arbeite an einem Programm wo ich bin neu zu den gespeicherten widgets wieder auf die Grenze-panel. Wenn ich am erstellen bin ich auch versuchen, die Werte in die ArrayList, so dass, wenn ich aktualisieren möchten, und speichern Sie das geöffnete Projekt, ich sollte in der Lage sein, so zu tun, indem man die Werte aus der ArrayList.
Hier ist, wie der code aussieht:
for(int i = 0; i < result.length; i++){
if(ename.contains(result[i].getParticipateEntityName())){
ername.add(ename.indexOf(result[i].getParticipateEntityName()), result[i].getParticipateRelatioshipName());
etotalpartial.add(ename.indexOf(result[i].getParticipateEntityName()), result[i].getTotalPartial());
}else if(wename.contains(result[i].getParticipateEntityName())){
wrname.add(wename.indexOf(result[i].getParticipateEntityName()), result[i].getParticipateRelatioshipName());
}
}
Hier ename, ername, etotalpartial, wename und wrname sind alle ArrayList. Dieses Stück code ist in einer asynchronen Methode der Klasse.
Wenn ich den code bekomme ich Fehler bei "ername.add(ename......".
Hier ist der Fehler-stack:
java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
at java.util.ArrayList.add(ArrayList.java:367)
at com.e.r.d.client.ERD1$16.onSuccess(ERD1.java:898)
at com.e.r.d.client.ERD1$16.onSuccess(ERD1.java:1)
at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:216)
at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:287)
at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:393)
at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:1713)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:165)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:120)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:507)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:264)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188)
at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:157)
at com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:1668)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:401)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:222)
at java.lang.Thread.run(Thread.java:619)
Ich bin nicht sicher, was ich falsch mache.
Jedem Eingang wird eine große Hilfe sein.
Danke.
InformationsquelleAutor suprasad | 2010-03-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut wie es aussieht ername oder wrname ist ein leeres array-Liste. ername.size (), wird wohl wieder 0 übrigens...
Sie entweder wollen, verwenden Sie die add(Object Object) - Methode, oder Sie können initialisieren einer Kapazität durch einfügen den folgenden code:
und dann dein code sollte funktionieren...
InformationsquelleAutor karlipoppins
Können Sie nicht verwenden, die
public void add(int index, E element)
Methode derList
wenn Sie können nicht garantieren, dass die Größe der Liste größer ist alsindex
.Das ist, was passiert mit Ihrem code. Sie haben eine leere Liste (
ername
), undename.indexOf(result[i].getParticipateEntityName())
ist wieder 1, so ist dieIndexOutOfBoundsException
. In anderen Worten, Sie haben eine Liste von Größe 0, und Sie versuchen, fügen ein element am index 1.Erwägen Sie die Verwendung der
public boolean add(E e)
Methode derArrayList
was fügt das neue element an das Ende der Liste.Sie können eine
Map
statt, mit dem Schlüssel wird dieindex
, und der Wert wirdename
.Oder Sie können ein array initialisiert, um die benötigte Kapazität.
Sie würde nur Platz verschwenden.
InformationsquelleAutor João Silva