I would comment if I could. Suraj, your algorithm is correct, but the code should be
int sum = 0;
for (int i = 0; i < npoints ; i++)
{
sum = sum + Xs[i]*Ys[(i+1)%npoints] - Ys[i]*Xs[(i+1)%npoints];
}
return Math.abs(sum / 2);
In your code last vertice is not taken into account. Just a small edit :)