Finding an Average

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 three test grades.
Step 0: Getting Started
Create a class called
Lab2
. Use the same setup for setting up your class and main method as you did for the
previous examples. Be sure to name your file
Lab2.java
.
Assignment/Lab Documentation
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 #2
// TIME SPENT: how long it took you to complete the assignment
//———————————————————–*/
Step 1: 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
object.
Follow the instructions in the sample video under Chapter 2 Lectures or in the book on page 49 to import
the
Scanner
class from the
java.util
library and create a
Scanner
object to get input from the keyboard
(
System.in
).Step 2: 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
1
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:
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 3: Getting the Input
Now that we have the needed variables declared, we are ready to use the
Scanner
object 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:
System.out.print(“Enter the score on the first test: “); // prompt
test1 = in.nextInt(); // read in the next integer (since test1 is an int) and store it in test1
where the already declared variable
test1
will hold the score for the first test and in is the
Scanner
object.
Write the prompt and read the input for all three tests.Step 4: 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.

Leave a Comment

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