My first assumption is that the problem is that your robot is overshooting the target. Am I correct? If so, you should implement a PID controller on your drive. As of now, even if your robot is only 0.00001 degrees away from the target, it is still going at max speed. Robots cannot stop immediately, so your robot will inevitably go past where it was supposed to. A PID controller aims to smooth out the velocity of your drive so that it comes to a nice clean stop. Please read this article by George Gillard IN ITS ENTIRETY. It is extremely helpful, and probably the most popular starting point for learning about PID.
The Drivetrain has logic included for heading and turning by degrees. You can use turnToHeading and turnFor.
// Set Drivetrain parameters
//Make sure the Drivetrain has enough time to make the move.
Drivetrain.driveFor(forward, 12.0, inches, true);
// Turn with heading
Drivetrain.turnToHeading(45.0, degrees, true);
// Turn with direction and degrees
Drivetrain.turnFor(right, 45.0, degrees, true);