Grading Students

I decided to tackle a HackerRank challenge. I selected the Grading Students challenge. If interested please follow the link and take a look at the requirements.

Following is the console capture of the Eclipse IDE using the sample input:

4
73
67
38
33

75
67
40
33

I decided to use a function to compute the rounded grade given that there are two conditions that would require it. My code in Java 8 follows:

import java.util.Scanner;

public class Solution {

	/**
	 * Round up grade.
	 */
	static int round(int grade) {
//		System.out.println("round <<< grade: " + grade);
		
		// **** next multiple of 5 ****
		
		int next = ((grade / 5) + 1) * 5; 
//		System.out.println("round <<<  next: " + next);
		
		// **** ****
		
		int diff = next - grade;
//		System.out.println("round <<<  diff: " + diff);
		
		// **** round up (if needed) ****
		
		if (diff < 3) {
			grade = next;
		}
		
		// **** ****
		
		return grade;
	}
	
	/**
	 * Test code.
	 */
	public static void main(String[] args) {
		
		// **** open scanner ****
		
		Scanner in = new Scanner(System.in);
		
		int n = in.nextInt();
		for(int a0 = 0; a0 < n; a0++) {
			int grade = in.nextInt();
//			System.out.println("main <<<  grade: " + grade);
			
			// **** failing grade ****
			
			if (grade < 40) { // **** rounding required **** if (grade >= 38) {
					grade = round(grade);
				}
			}
			
			// **** passing grade ****
			
			else {
				grade = round(grade);
			}
			
			// **** print the grade ****
			
			System.out.println(grade);
		}
		
		// **** close scanner ****
		
		in.close();
	}
}

The challenge was ranked easy. I always like to start simple and walk my way up.

I commented out some lines of code that I used to test the program as it was being developed. I could have removed them but decided to leave them in to show how I like to develop software.

If you have comments or questions please let me know. I will not use your name unless you explicitly allow me to do so.

John

john.canessa@gmail.com

Follow me on Twitter: @john_canessa

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.