Thread: Array Index Out Of Bounds and Problem in Assigning Values

1. Member
Join Date
Dec 2009
Posts
4
Rep Power
0

Array Index Out Of Bounds and Problem in Assigning Values

Java Code:
```public class Ch6Exercise8 {

public static void main(String[] args) {

int[] divisors = new int[0];

int number = 7,
divisibilityCount = 0;

for (int x = 1; x <= number; x++) {

if (number % x == 0) {

divisibilityCount++;
divisors = new int[divisibilityCount];
}

for (int i = 0; i <= divisors.length - 1; i++) {

if (divisors[i] == 0) {

divisors[i] = x;
}
else {

divisors[i + 1] = x;
}
}
}

for (int x = 0; x <= divisors.length - 1; x++) {

System.out.println(divisors[x]);
}
}
}```
can figure it out why is it out of bounds...

what i want in this program is that i want to determine if a number is a prime number(im okay with this part),

but im having problem with the ff:
1.) store it in an integer[] array
2.) the length of an array WILL ONLY DEPEND on the number of the values.
ex: (ofcourse prime numbers are only divisible by 1 and itself) ,
so i want to STORE those values in an array.
but as the case have said, THE LENGTH OF THE ARRAY WILL ONLY
DEPEND O N THE number (i.e Length) of the values. :confused:

2. Check your loop for x == 2; no new array will be created and the first value is not equal to zero. I don't know what you want to do exactly but may I suggest you use a List<Integer> for all divisors instead?

kind regards,

Jos

3. Your first Exception is because of the inner loop:
If your last number (where i == devisors.length-1) is not zero you jump to the else branch and try to access the array with [i+1] where i+1 is then greater than the bounds of an array

it also very strage why you do that and maybe wrong.

Yes, you are right the borders depends on the given number but the number of devisors is limited: it is easy to see that the highest number of devisors would be n/2; namely the the maxmial amount of the smallest devisor: 2
(of course this is not optimal solution)

Also there are two approaches, depending on what you want to achieve.
If you want to do a Primality test then the Sieve of Eratosthenes is a one easy way.
If you want to do factorization look into integer factorization but there is no easy way do do it ;-)

Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•