System.arraycopy getting ava.lang.ArrayIndexOutOfBoundsException.. I am trying to copy data from one array to the next. but I am getting a exception
private String array[] = { "NO DATA YET" };
private void setListData()
{
String array2[] = { "Iphone", "Tutorials", "Gallery", "Android", "item 1", "item 2", "item3", "item 4" };
System.arraycopy(array2, 0, array, 0, array2.length);
}
The ArrayIndexOutOfBoundsException is one of the most common errors in Java. It occurs when a program attempts to access an invalid index in an array i.e. an index that is less than 0, or equal to or greater than the length of the array.
Use Proper Start And End Indices Arrays always start with index 0 and not 1. Similarly, the last element in the array can be accessed using the index 'arraylength-1' and not 'arraylength'. Programmers should be careful while using the array limits and thus avoid ArrayIndexOutOfBoundsException.
You're trying to copy 8 items into an array of length 1. You can't do that.
From the documentation:
Otherwise, if any of the following is true, an IndexOutOfBoundsException is thrown and the destination is not modified:
- The srcPos argument is negative.
- The destPos argument is negative.
- The length argument is negative.
- srcPos+length is greater than src.length, the length of the source array.
- destPos+length is greater than dest.length, the length of the destination array.
In this case, destPos + length
is 8, and dest.length
is 1, hence the exception is being thrown.
Note that arrays in Java have a fixed length. If you want an expandable container, look at ArrayList
.
Because the length of array
is 1.
The declaration array[] = { "NO DATA YET" };
creates an array of length 1 with one item in it.
Instead declare destination array as:
private String array[] = new String[8];
array only has a length of 1 and you're trying to copy 8 things into it from array2. Try using an ArrayList or something that will grow as you need it to grow.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With