0

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

0 Answers0