Area and Circumference of a Circle
Study the program below, which uses both variables and constants:
//**********************************************************
// Circle.java
//
// Print the area of a circle with two different radii
//**********************************************************
public class Circle
{
public static void main(String[] args)
{
final double PI = 3.14159;
int radius = 10; // Line A
double area = PI * radius * radius;
System.out.println("The area of a circle with radius " + radius +
" is " + area);
radius = 20; // Line B
area = PI * radius * radius;
System.out.println("The area of a circle with radius " + radius +
" is " + area);
}
}
Some things to notice:
- The first three lines inside main are declarations for
PI, radius, and area. Note that the type for each is given in these
lines: final double for PI, since it is a floating point constant;
int for
radius, since it is an integer variable, and double for area, since it
will hold the product of the radius and PI, resulting in a floating point
value.
- These first three lines also hold initializations for PI, radius, and
area. These could have been done separately, but it is often convenient
to assign an initial value when a variable is declared.
- The next line is simply a print statement that shows the area for a
circle of a given radius.
- The next line is an assignment statement, giving variable radius the
value 20. Note that this is not a declaration, so the int that was in the
previous radius line does not appear here. The same memory location that
used to hold the value 10 now holds the value 20 -- we are not setting up a
new memory location.
- Similar for the next line -- no double because area was already declared.
- The final print statement prints the newly computed area of the circle
with the new radius.
Save this program, which is in file Circle.java,
into your directory and modify it as follows:
- The circumference of a circle is two times the product of Pi and the radius.
Add statements to this program so that it computes the circumference in addition
to the area for both circles. You will need to do the following:
- Declare a new variable to store the circumference.
- Store the circumference in that variable each time you compute it.
- Add two additional print statements to print your results.
Be sure your results are clearly labeled.
Copy the output into the lab document, labelling it Circle1.
- When the radius of a circle doubles, what happens to its circumference and
area? Do they double as well? You can determine this by dividing the second
area by the first area. Unfortunately, as it is now, the program overwrites
the result of the first area's calculation with the calculation of the second (same for the circumference). You need
to save the first area and circumference calculations that you compute instead of overwriting
them with the second set of computations. So you'll need two area variables
and two circumference variables, which means they'll have to have different
names (e.g., area1 and area2). Remember that each variable will have to be
declared. Modify the program as follows:
- Change the names of the area and circumference variables so that they
are different in the first and second calculations. Be sure that you print
out whatever you just computed.
- At the end of the program, compute the area change by dividing the
second area by the first area. This gives you the factor by which the
area grew. Store this value in an appropriately named variable (which
you will have to declare).
- Add a println statement to print the change in area that you just computed (for example, "The second area is 1.2 times the size of the first.")
- Now repeat the same two steps for the circumference.
Look at the results. Is this what you expected?
If the results were not what you expected, please explain how so in your lab document. Copy the output into the lab document, labelling it Circle 2.
- In the program above, you showed what happened to the circumference and
area of a circle when the radius went from 10 to 20. Does the same thing happen
whenever the radius doubles, or were those answers just for those particular
values? To figure this out, you can write a program that reads in values for
the radius from the user instead of having it written into the program ("hardcoded").
Modify your program as follows: