Re: ArrayIndexOutOfBoundsException confusion
phillip.s.powell wrote:
private final String[] buttonNameArray = {...};
private final String[] buttonValArray = {...};
It is hard in this type of situation to keep the arrays in synch with each
other. You could use a String [] [] to keep your pairs consistent, say,
private final String [] [] nameVals
= {{ "cButton", "CE" }, { "ceButton", "%" }, ... };
private Hashtable buttonHash = null;
You don't need to redundantly initialize instance variables to null.
Oh, and you might not need a Hashtable; a HashMap might serve your purposes.
It depends on multithreading and synchronization strategies.
private Map< String, String> buttonMap = new HashMap< String, String> ();
private void initComponents() {
this.buttonHash = new Hashtable();
for (int i = 0; i < this.buttonNameArray.length; i++) {
this.buttonHash.put(this.buttonNameArray[i],
this.buttonValArray[i]);
}
}
for ( String [] pair : nameVals )
{
buttonMap.put( pair [0], pair [1] );
}
If you didn't control the array, you'd need to watch out for pair.length < 2.
A. Bolmarcich wrote:
The exception message is complaining an index value of 24 begin out of
bounds. What are the values of buttonNameArray.length and
buttonValArray.length?
With only one array, and a guarantee that each element thereof has two
elements, there is only one length to measure.
- Lew