That "if" statement on line 75 is pretty hard to parse with the human eye, but I don't think I can see a missing parenthesis.
It would be much easier to parse - and debug - that line if you organised it a bit more sensibly. For a start, why pass the entire array into the function along with an index? Why not just pass in a single STUDENT object?
then the whole thing becomes much more easy to look at and debug.
For starters, now that I've abstracted away a whole load of  and (), I can see that the logic of the condition is very muddled. It looks as though you're checking whether the DOB is one of 01/01/1990, 02/02/1990 or 03/03/1990. If that's the case, you want some extra parentheses in there to ensure the expressions are evaluated in the correct order: