Re: Help with vector problem
- From: Mark Thomas <anon>
- Date: Thu, 27 Apr 2006 12:55:18 +0100
Petterson Mikael wrote:
Hi,Quite a bit really:
We get an java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1 on the following line:
Object tmp = moDataTable.get(i + 1);
The following trace:
System.out.println("MAX:moDataTable is empty");
does not show on the console so it is not empty and it should not enter the loop.
Any ideas what could be wrong?
This loop steps though the entire Vector and calls the same isEmpty() method for every element! You do realize that isEmpty() checks to see if the whole Vector is empty, not that a particular element is null.
cheers,
//mikael
My code:
private Vector moDataTable;
public synchronized void add(Object moData) {
if ((moData != null) && (moData instanceof MoData)) {
for (int i = 0; i < moDataTable.size(); i++) {
if (moDataTable.isEmpty()) {
System.out.println("MAX:moDataTable is empty");
}
This gets the (i+1)th element from the Vector - so it stands to reason that on the last iteration it will trying to get an element 1 greater than the size of the Vector - hence your exception.
Object tmp = moDataTable.get(i + 1);
You aren't attempting to add anywhere - just get.
if (tmp instanceof MoData) {
if (((MoData) tmp).getLocalDistinguishedName().equals(((MoData)
moData)
.getLocalDistinguishedName())) {
System.out.println("WARNING!!: there was attempt to add MoData with duplicate LDN, ignoring, "
+ ((MoData) moData)
.getLocalDistinguishedName());
return;I think you need to step back and try to work out what you're trying to do.
}
}
}
}
}
Mark
.
- References:
- Help with vector problem
- From: Petterson Mikael
- Help with vector problem
- Prev by Date: Re: Help with vector problem
- Next by Date: Re: Help needed making a move into a Apple iBook
- Previous by thread: Re: Help with vector problem
- Index(es):