Ich erhalte die folgende Fehlermeldung:
Die betroffene Stelle ist diese:
Die ArrayListe newsHeadlines wird beim Programmstart deklariert und in dieser Methode zum ersten Mal initialisiert. Ich verstehe leider nicht ganz, warum hier eine IndexOutOfBoundsException geworfen wird. Zum Probieren habe ich die Variable length um mehrere Werte verkleinert, aber das Ergebnis bleibt das Gleiche. Woran liegt das?
Java:
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 125, Size: 125
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at Client.getNewsHeadlines(Client.java:140)
at Client$1.actionPerformed(Client.java:67)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6535)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
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:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
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)
Die betroffene Stelle ist diese:
Java:
public void getNewsHeadlines(String link) throws IOException {
Document doc = Jsoup.connect(link).get();
Elements newsHeadlines = doc.select("a[href][title]");
int length = newsHeadlines.size();
for(int i = 0;i<length;++i) {
if(!newsHeadlines.get(i).hasText()) {
newsHeadlines.remove(i);
}
}
System.out.println(newsHeadlines.size());
newsHeadlines.trimToSize();
System.out.println(newsHeadlines.size());
}
Die ArrayListe newsHeadlines wird beim Programmstart deklariert und in dieser Methode zum ersten Mal initialisiert. Ich verstehe leider nicht ganz, warum hier eine IndexOutOfBoundsException geworfen wird. Zum Probieren habe ich die Variable length um mehrere Werte verkleinert, aber das Ergebnis bleibt das Gleiche. Woran liegt das?