Java语言程序设计与数据结构(基础篇)梁勇第九章书中例题

程序清单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;

	}

}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值