Problem Description: Finding an Average
Your friend Jenny has a class that gives three tests. She would like you to write a program that will take the three test grades as input and tell her what her average test grade is. For this Lab you are required to write a program that will read three test grades from the user and then calculate and print the average of those grades.
Using Eclipse for a Mac or PC
To run Eclipse on your personal computer, you need to have JRE installed on your computer. Download and install the latest JRE or JDK from http://www.oracle.com/technetwork/java/javase/downloads/index.html (Links to an external site.)Links to an external site.
Then download and install the Eclipse IDE for Java Developers for your computer environment at the following link: http://www.eclipse.org/downloads/ (Links to an external site.)Links to an external site.
Eclipse should already be installed on all Lab computers.
Step 1: Getting Started
Start Eclipse. It will ask you for a workspace to save your files. Change this to where you want to store your project. You will want and pay attention to this, as this is where you will find the files on your computer that you have to submit.
After Eclipse opens you will have to create a new Java project in order to create any files. To do this choose File -> New -> Project -> Java ->Java Project. Give the project a name (like CSE110 Lab 1) and then click Finish below.
Next you have to add a Class to your Project. To do this right click on the project in the package explorer on the left of the screen and then select New -> Class. Name the class the appropriate name, for example You should call the class you create here Lab1 and click on Finish. The editor will then open and you can write your program.
To compile and run the program click on the green play button in the toolbar. The output will show up in a console at the bottom of Eclipse.
At the beginning of each programming assignment you must have a comment block with the following information:
// AUTHOR: your name
// FILENAME: title of the source file
// SPECIFICATION: description of the program
// FOR: CSE 110- Lab #1
// TIME SPENT: how long it took you to complete the assignment
Step 2: Setting up a Scanner for Input
Since you are required to read in the three test grades from the user, you will have to use a Scanner. Follow the instructions in Chapter 2 or in the book to import the Scanner class from the java.util library and create a Scanner object to get input from the keyboard (System.in).
Step 3: Declaring Variables
Examining the problem, we see that we will need three inputs from the user. We will need variables to hold all of the inputs. For this Lab, let’s assume that all the test grades will be integers. Therefore, we will need three int variables to hold the three test grades. Remember, if you need more than one variable of the same type, you can declare them in the same statement separated by commas. For example if we needed two double variables, we could declare them like this.
double var1, var2;
Declare three int variables to hold the three test grades. Be sure to give them appropriate names like test1, test2, etc. rather than x, y, z.
Additionally, looking at the problem, we see that we have the number 3 occurring in the problem. Rather than simply using this number in the program when needed, it is preferable to declare a constant variable to hold the number so that when it is used in the program, it will be clear what the 3 refers to. Remember to create a constant you use the keyword final in front of the declaration. Also it is customary to use ALL_CAPS for the name of the constant. For example if we wanted a constant to hold the value PI, we would declare
final double PI = 3.14159;
Declare an int constant to hold the value 3, the number of tests. Be sure to give the constant an appropriate name like NUM_TESTS.
Finally, when looking at a problem you may need variables to hold the solution or some intermediary steps. For this problem we need to calculate an average. We will need a variable to hold the average. Usually, the average of values can contain decimal values, so you will need to declare a double variable to hold the average.
Step 4: Getting the Input
Now that we have the needed variables declared, we are ready to use the Scanner we created to get the input from the user. Before reading in the input though, it is important to give the user a prompt so the user knows what they are expected to enter. Then we use the Scanner object with the appropriate method to read in the value and store it in a variable. For example to prompt and read in the first test score, we would use something like this.
Scanner input = new Scanner(System.in);
System.out.print("Enter the score on the first test: "); // prompt
test1Score = in.nextInt(); // read in the next integer
where the already declared variable test1Score will hold the score for the first test and in is the Scanner object.
Write the code to prompt for and read the input for all three test scores.
Step 5: Calculate the average
After reading the three input values from the user, we can use them to calculate the average. To do so we add up all the values and divide them by the number of tests. Naively, this would be:
average = test1 + test2 + test3 / NUM_TESTS;
However, due to operator precedence rules, Java will do the division, test3 / NUM_TESTS, before the addition, which will give the wrong result. To force Java to do the addition first, we have to use parentheses.
average = (test1 + test2 + test3) / NUM_TESTS;
This will calculate the average, but there is still a problem. Assume the test grades are 90, 90, and 92, then the average will be 90.6666, but Java will give the answer as 90 (You should run the program and print the result to verify). This is because all the variables are integers and so Java does integer division. To force Java to do decimal division, we have to cast one of the variables to a double. Remember to cast a value to another type you put the type you want to cast to in parentheses before the value. So, let’s cast NUM_TESTS to a double
average = (test1 + test2 + test3) / (double)NUM_TESTS;
We could have cast any of the other variables as well.
Calculate the average test score in your code.
Step 6: Display Results
Now that we have calculated the result we need to show it to the user. Use a System.out.println statement to display the average score to the user. Be sure to have a statement explaining what the number is. That is, don’t just print the number. For example, if we wanted to print the first test score, we would use the following statement:
System.out.println("Your first test score: " + test1Score);
Use the following Coding Guidelines (You will be graded on this):
- Give identifiers semantic meaning and make them easy to read (examples numStudents, grossPay, etc).
- Keep identifiers to a reasonably short length.
- Use upper case for constants. Use title case (first letter is upper case) for classes. Use lower case with uppercase word separators for all other identifiers (variables, methods, objects).
- Use tabs or spaces to indent code within blocks (code surrounded by braces). This includes classes, methods, and code associated with ifs, switches and loops. Be consistent with the
number of spaces or tabs that you use to indent.
- Use white space to make your program more readable.
- Use comments after the ending brace of classes, methods, and blocks to identify to which block it belongs.