What is the problem in my code? I am getting run time error. I am new to Java programming and I am facing difficulties while compiling the following code:
import java.util.Arrays;
import java.util.Scanner;
public class StoneDivision {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
long n = scan.nextLong();
int m = scan.nextInt();
long si[] = new long[m];
for (int i = 0; i < m; i++) {
si[i] = scan.nextLong();
}
Arrays.sort(si);
if (calculateWin(n, m, si, si.length - 1, 1)) {
System.out.println("First");
} else {
System.out.println("Second");
}
}
static boolean calculateWin(long n, int m, long[] si, int siIndex, int count) {
long siN = si[siIndex];
if (n / siN == 0)
return true;
if (n == 1)
if (n % siN == 0) {
long nN = n / siN;
count++;
}
return calculateWin(n, m, si, siIndex - 1, count);
}
}
The error which I am getting:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at StoneDivision.calculateWin(StoneDivision.java:28)
at StoneDivision.calculateWin(StoneDivision.java:40)
at StoneDivision.calculateWin(StoneDivision.java:40)
at StoneDivision.calculateWin(StoneDivision.java:40)
at StoneDivision.main(StoneDivision.java:19)
Here is the ideone link: http://ideone.com/g2C0ph