程序清单9-1:TestCircle.java
public class TestCircle {
public static void main(String[] args) {
//create circle1 with radius 1
Circle circle1 = new Circle();
System.out.println("The area of the circle of radius "
+ circle1.radius + " is " + circle1.getArea());
//Create a circle with radius 25
Circle circle2 = new Circle(25);
System.out.println("The area of the circle of radius "
+ circle2.radius + " is " + circle2.getArea());
//Create a circle with radius 125
Circle circle3 = new Circle(125);
System.out.println("The area of the circle of radius "
+ circle3.radius + " is " + circle3.getArea());
//Modify circle radius
circle2.radius = 100;//or circle2.radius.setRadius(100)
System.out.println("The area of the circle of radius "
+ circle2.radius + " is " + circle2.getArea());
}
}
//Define the circle class with two constructors
class Circle{
double radius;
/* *Construct a circle with a radius 1*/
Circle(){
radius = 1;
}
Circle(double newRadius){
radius = newRadius;
}
double getArea() {
return radius * radius * Math.PI;
}
double getPerimeter() {
return 2 * radius * Math.PI;
}
void setRadius(double newRadius) {
radius = newRadius;
}
}
程序清单9-2:Circle.java(AlternativeCircle.java)
public class Circle {
public static void main(String[] args) {
//Create a circle with radius 1
Circle circle1 = new Circle();
System.out.println("The area of the circle of radius "
+ circle1.radius + " is " + circle1.getArea());
// Create a circle with radius 25
Circle circle2 = new Circle(25);
System.out.println("The area of the circle of radius "
+ circle2.radius + " is " + circle2.getArea());
//Create a circle with radius 125
Circle circle3 = new Circle(125);
System.out.println("The area of the circle of radius "
+ circle3.radius + " is " + circle3.getArea());
//Modify circle radius
circle2.radius = 100;
System.out.println("The area of the circle of radius "
+ circle2.radius + " is " + circle2.getArea());
}
double radius;
/* * Construct a circle with radius 1*/
Circle(){
radius = 1;
}
/* *Construct a circle with a specified radius */
Circle(double newRadius){
radius = newRadius;
}
/* *Return the area of the circle */
double getArea() {
return radius * radius * Math.PI;
}
double getPerimeter() {
return 2 * radius * Math.PI;
}
/* *Set a new radius for this circle */
void setRadius(double newRadius) {
radius = newRadius;
}
}
程序清单9-3:TV.java
public class TV {
int channel = 1;//Default channel is 1
int volumeLevel = 1;//Default volume level is 1
boolean on = false;//TV is off
public TV() {
}
public void turnOn() {
on = true;
}
public void turnOff() {
on = false;
}
public void setChannel(int newChannel) {
if(on && newChannel >= 1 && newChannel <= 120)
channel = newChannel;
}
public void setVolume(int newVolumeLevel) {
if(on && newVolumeLevel >= 1 && newVolumeLevel <= 120)
volumeLevel = newVolumeLevel;
}
public void channelUp() {
if(on && channel < 120)
channel++;
}
public void channelDown() {
if(on && channel > 1)
channel--;
}
public void volumeUp() {
if(on && volumeLevel < 7)
volumeLevel++;
}
public void volumeDown() {
if(on && volumeLevel > 1)
volumeLevel--;
}
}
程序清单9-4:TestTV.java
public class TestTV {
public static void main(String[] args) {
TV tv1 = new TV();
tv1.turnOn();
tv1.setChannel(30);
tv1.setVolume(3);
TV tv2 = new TV();
tv2.turnOn();
tv2.channelUp();
tv2.channelUp();
tv2.volumeUp();
System.out.println("tv1's channel is " + tv1.channel
+ " and volume level is " + tv1.volumeLevel);
System.out.println("tv2's channel is " + tv2.channel
+ " and volume level is " + tv2.volumeLevel);
}
}
程序清单9-5:TestPoint2D.java
import javafx.geometry.Point2D;
import java.util.Scanner;
public class TestPoint2D {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter point1's x -, y-coordinates: ");
double x1 = input.nextDouble();
double y1 = input.nextDouble();
System.out.print("Enter point1's x -, y-coordinates: ");
double x2 = input.nextDouble();
double y2 = input.nextDouble();
Point2D p1 = new Point2D(x1, y1);
Point2D p2 = new Point2D(x2, y2);
System.out.println("p1 is " + p1.toString());
System.out.println("p2 is " + p2.toString());
System.out.println("The distance between p1 and p2 is " +
p1.distance(p2));
System.out.println("The midpoint between p1 and p2 is " +
p1.midpoint(p2).toString());
input.close();
}
}
程序清单9-6:Circle.java(用于CircleWithStaticMembers)
public class Circle {
double radius;
static int numberOfObjects = 0;
Circle() {
radius = 1;
numberOfObjects++;
}
Circle(double newRadius) {
radius = newRadius;
numberOfObjects++;
}
static int getNumberOfObjects() {
return numberOfObjects;
}
double getArea() {
return radius * radius * Math.PI;
}
}
程序清单9-7:TestCircleWithStaticMembers.java
public class TestCircleWithStaticMembers {
public static void main(String[] args) {
System.out.println("Before creating objects ");
System.out.println("The number of Circle objects is " +
Circle.numberOfObjects);
//Create c1
//Use the Circle class in Listing 9.6
Circle c1 = new Circle();
//Display c1 BEFORE c2 is created
System.out.println("\nAfter creating c1");
System.out.println("c1: radius (" + c1.radius +
") and number of Circle objects (" +
c1.numberOfObjects + ")");
//Create c2
Circle c2 = new Circle(5);
//Modify c1
c1.radius = 9;
//Display c1 and c2 AFTER c2 was created
System.out.println("\nAfter creating c2 and modifying c1");
System.out.println("c1: radius (" + c1.radius +
") and number of Circle objects (" + c1.numberOfObjects + ")");
System.out.println("c2: radius (" + c2.radius +
") and number of Circle objects (" + c2.numberOfObjects + ")");
}
}
程序清单9-8:Circle.java(用于CircleWithPrivateDataFields)
public class Circle {
/**
* The radius of the circle
*/
private double radius = 1;
/**
* The number of objects created
*/
private static int numberOfObjects = 0;
/**
* Construct a circle with radius 1
*/
public Circle() {
numberOfObjects++;
}
/**
* Construct a circle with a specified radius
*/
public Circle(double newRadius) {
radius = newRadius;
numberOfObjects++;
}
/**
* Return radius
*/
public double getRadius() {
return radius;
}
/**
* Set a new radius
*/
public void setRadius(double newRadius) {
radius = (newRadius >= 0) ? newRadius : 0;
}
/**
* Return numberOfObjects
*/
public static int getNumberOfObjects() {
return numberOfObjects;
}
/**
* Return the area of this circle
*/
public double getArea() {
return radius * radius *Math.PI;
}
}
程序清单9-9:TestCircleWithPrivateDataFields.java
public class TestCircleWithPrivateDataFields {
public static void main(String[] args) {
//Create a circle with radius 5.0
Circle myCircle = new Circle(5.0);
System.out.println("The area of the circle of radius "
+ myCircle.getRadius() + " is " + myCircle.getArea());
//Increase myCircle's radius by 10%
myCircle.setRadius(myCircle.getRadius() * 1.1);
System.out.println("The area of the circle of radius "
+ myCircle.getRadius() + " is " + myCircle.getArea());
System.out.println("The number of objects created is "
+ Circle.getNumberOfObjects());
}
}
程序清单9-10:TestPassObject.java9(Circle类是在9-8中定义的)
public class TestPassObject {
/**
* Main method
*/
public static void main(String[] args) {
//Create a Circle object with radius 1
//Use the Circle class in Listing 9.8
Circle myCircle = new Circle(1);
//Print areas for radius 1,2,3,4, and 5
int n = 5;
printAreas(myCircle,n);
//See myCircle.radius and times
System.out.println("\n" + "Radius is " + myCircle.getRadius());
System.out.println("n is " + n);
}
/**
* Print a table of areas for radius
*/
public static void printAreas(Circle c, int times) {
System.out.println("Radius \t\t Area");
while (times >= 1){
System.out.println(c.getRadius() + "\t\t" + c.getArea());
c.setRadius(c.getRadius() + 1);
times--;
}
}
}
程序清单9-11:TotalArea.java(Circle类是在9-9中定义的)
public class TotalArea {
public static void main(String[] args) {
Circle[] circleArray;
//Create circleArray
circleArray = createCircleArray();
//Print circleArray and total areas of the circles
printCircleArray(circleArray);
}
/**
* Create an array of Circle objects
*/
public static Circle[] createCircleArray() {
Circle[] circleArray = new Circle[5];
for (int i = 0; i < circleArray.length; i++) {
circleArray[i] = new Circle(Math.random() * 100);
}
//Return Circle array
return circleArray;
}
/**
* Print an array of circles and their total area
*/
public static void printCircleArray(Circle[] circleArray) {
System.out.printf("%-30s%-15s\n", "Radius", "Area");
for (int i = 0; i < circleArray.length; i++) {
System.out.printf("%-30f%-15f\n",circleArray[i].getRadius(),circleArray[i].getArea());
}
System.out.println("_______________________________________________");
System.out.printf("%-30s%-15f\n", "The total area of circle is",
sum(circleArray));
}
public static double sum(Circle[] circleArray) {
//Initialize sum
double sum = 0;
//Add areas to sum
for (int i = 0; i < circleArray.length; i++) {
sum += circleArray[i].getArea();
}
return sum;
}
}