8. (30pts) Write a complete Java program, including comments, to do the following: You are to write a program which will assign and print a student’s final grade in a course. The final grade will be based on grades received on two regular exams and the grade received on the final exam. You are to proceed as follows: a) Prompt the user to enter a given student’s data from the keyboard. The data consists of the student’s ID, and the student’s grades on the first, second, and final exams. The program should call these variables: id, examl, exam2, and finalExam respectively. The program should print the original information read. A typical set of data could be 1234 95 82 91 b) Each grade entered is to be checked. If the grade entered was negative, replace it by its positive equivalent (e.g., -75 becomes +75). If the grade was greater than 100, subtract 100 from the grade as many times as needed to bring the grade into the range 0.100 c) The student’s weighted average (a real number) is to calculated from the corrected grades. The weighted average will be computed on the following basis: each regular exar counts 35% and the final exam counts 30%. The program will call this value weightedAverage. d) The program will then print the student’s ID, the corrected grades on each exam, the weighted average (to 2 decimal places), and an alphabetic grade based on the student’s final numeric grade as follows: final grade-> alphabetic grade 90..100 80..89 70.79 60..69 0..59 S >A ->B > C >D >F e) Repeat the entire series of operations for each successive student until all students have been processed. Make it work for a variable number of students. Count and print how many students have been processed. Use a sentinel to determine the end of the data set.