public class Exercise13_01 {
public static void main(String[] args) {
TriangleNew triangle = new TriangleNew(1, 1.5, 1); triangle.setColor(\"yellow\"); triangle.setFilled(true);
System.out.println(triangle);
System.out.println(\"The area is \" + triangle.getArea()); System.out.println(\"The perimeter is \" + triangle.getPerimeter()); System.out.println(triangle); } }
class TriangleNew extends GeometricObject {
private double side1 = 1.0, side2 = 1.0, side3 = 1.0;
/** Constructor */ public TriangleNew() { }
/** Constructor */
public TriangleNew(double side1, double side2, double side3) { this.side1 = side1; this.side2 = side2; this.side3 = side3; }
/** Implement the abstract method findArea in GeometricObject */ public double getArea() {
double s = (side1 + side2 + side3) / 2;
return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3)); }
/** Implement the abstract method findCircumference in * GeometricObject **/
public double getPerimeter() { return side1 + side2 + side3; }
@Override
public String toString() {
// Implement it to return the three sides
return \"TriangleNew: side1 = \" + side1 + \" side2 = \" + side2 + \" side3 = \" + side3; } } 02
import java.util.ArrayList; public class Exercise13_02 {
public static void main(String[] args) {
ArrayList for (int i = 0; i < list.size(); i++) System.out.print(list.get(i) + \" \"); } public static void shuffle(ArrayList int index = (int)(Math.random() * list.size()); Number temp = list.get(i); list.set(i, list.get(index)); list.set(index, temp); } } } 03 import java.util.ArrayList; public class Exercise13_03 { public static void main(String[] args) { ArrayList for (int i = 0; i < list.size(); i++) System.out.print(list.get(i) + \" \"); } public static void sort(ArrayList // Find the minimum in the list[i..list.length-1] Number currentMin = list.get(i); int currentMinIndex = i; for (int j = i + 1; j < list.size(); j++) { if (currentMin.doubleValue() > list.get(j).doubleValue()) { currentMin = list.get(j); currentMinIndex = j; } } // Swap list.get(i) with list.get(currentMinIndex) if necessary; if (currentMinIndex != i) { list.set(currentMinIndex, list.get(i)); list.set(i, currentMin); } } } } 04 import java.util.*; public class Exercise13_04 { static MyCalendar calendar = new MyCalendar(); public static void main(String[] args) { int month = calendar.get(MyCalendar.MONTH) + 1; int year = calendar.get(MyCalendar.YEAR); if (args.length > 2) System.out.println(\"Usage java Exercise13_04 month year\"); else if (args.length == 2) { //use user-defined month and year year = Integer.parseInt(args[1]); month = Integer.parseInt(args[0]); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month - 1); } else if (args.length == 1) { //use user-defined month for the current year month = Integer.parseInt(args[0]); calendar.set(Calendar.MONTH, month-1); } //set date to the first day in a month calendar.set(Calendar.DATE, 1); //print calendar for the month printMonth(year, month); } static void printMonth(int year, int month) { //get start day of the week for the first date in the month int startDay = getStartDay(); //get number of days in the month int numOfDaysInMonth = calendar.daysInMonth(); //print headings printMonthTitle(year, month); //print body printMonthBody(startDay, numOfDaysInMonth); } static int getStartDay() { return calendar.get(Calendar.DAY_OF_WEEK); } static void printMonthBody(int startDay, int numOfDaysInMonth) { //print padding space before the first day of the month int i = 0; for (i = 0; i < startDay-1; i++) System.out.print(\" \"); for (i = 1; i <= numOfDaysInMonth; i++) { if (i < 10) System.out.print(\" \"+i); else System.out.print(\" \"+i); if ((i + startDay - 1) % 7 == 0) System.out.println(); } System.out.println(\"\"); } static void printMonthTitle(int year, int month) { System.out.println(\" \"+calendar.getMonthName()+\ System.out.println(\"-----------------------------\"); System.out.println(\" Sun Mon Tue Wed Thu Fri Sat\"); } } 05 public class Exercise13_05 { // Main method public static void main(String[] args) { // Create two comparable circles Circle1 circle1 = new Circle1(5); Circle1 circle2 = new Circle1(4); // Display the max circle Circle1 circle = (Circle1) GeometricObject1.max(circle1, circle2); System.out.println(\"The max circle's radius is \" + circle.getRadius()); System.out.println(circle); } } abstract class GeometricObject1 implements Comparable // Default construct protected GeometricObject1() { color = \"white\"; weight = 1.0; } // Construct a geometric object protected GeometricObject1(String color, double weight) { this.color = color; this.weight = weight; } // Getter method for color public String getColor() { return color; } // Setter method for color public void setColor(String color) { this.color = color; } // Getter method for weight public double getWeight() { return weight; } // Setter method for weight public void setWeight(double weight) { this.weight = weight; } // Abstract method public abstract double getArea(); // Abstract method public abstract double getPerimeter(); public int compareTo(GeometricObject1 o) { if (getArea() < o.getArea()) return -1; else if (getArea() == o.getArea()) return 0; else return 1; } public static GeometricObject1 max(GeometricObject1 o1, GeometricObject1 o2) { if (o1.compareTo(o2) > 0) return o1; else return o2; } } // Circle.java: The circle class that extends GeometricObject class Circle1 extends GeometricObject1 { protected double radius; // Default constructor public Circle1() { this(1.0, \"white\ } // Construct circle with specified radius public Circle1(double radius) { super(\"white\ this.radius = radius; } // Construct a circle with specified radius, weight, and color public Circle1(double radius, String color, double weight) { super(color, weight); this.radius = radius; } // Getter method for radius public double getRadius() { return radius; } // Setter method for radius public void setRadius(double radius) { this.radius = radius; } // Implement the findArea method defined in GeometricObject public double getArea() { return radius * radius * Math.PI; } // Implement the findPerimeter method defined in GeometricObject public double getPerimeter() { return 2 * radius * Math.PI; } // Override the equals() method defined in the Object class public boolean equals(Circle1 circle) { return this.radius == circle.getRadius(); } @Override public String toString() { return \"[Circle] radius = \" + radius; } @Override public int compareTo(GeometricObject1 o) { if (getRadius() > ((Circle1) o).getRadius()) return 1; else if (getRadius() < ((Circle1) o).getRadius()) return -1; else return 0; } } 06 public class Exercise13_06 { // Main method public static void main(String[] args) { // Create two comarable rectangles ComparableCircle circle1 = new ComparableCircle(5); ComparableCircle circle2 = new ComparableCircle(15); // Display the max rect ComparableCircle circle3 = (ComparableCircle)Max.max(circle1, circle2); System.out.println(\"The max circle's radius is \" + circle3.getRadius()); System.out.println(circle3); } } class ComparableCircle extends Circle implements Comparable @Override public int compareTo(ComparableCircle o) { if (getRadius() > o.getRadius()) return 1; else if (getRadius() < o.getRadius()) return -1; else return 0; } } //Max.java: Find a maximum object class Max { /** Return the maximum of two objects */ public static ComparableCircle max (ComparableCircle o1, ComparableCircle o2) { if (o1.compareTo(o2) > 0) return o1; else return o2; } } 07 public class Exercise13_07 { public static void main(String[] args) { GeometricObject[] objects = {new Square(2), new Circle(5), new Square(5), new Rectangle(3, 4), new Square(4.5)}; for (int i = 0; i < objects.length; i++) { System.out.println(\"Area is \" + objects[i].getArea()); if (objects[i] instanceof Colorable) ((Colorable)objects[i]).howToColor(); } } } interface Colorable { void howToColor(); } class Square extends GeometricObject implements Colorable { private double side; public Square(double side) { this.side = side; } @Override public void howToColor() { System.out.println(\"Color all four sides\"); } @Override public double getArea() { return side * side; } @Override public double getPerimeter() { return 4 * side; } } 08 import java.util.ArrayList; public class Exercise13_08 { public static void main(String[] args) { MyStack1 stack = new MyStack1(); stack.push(\"S1\"); stack.push(\"S2\"); stack.push(\"S\"); MyStack1 stack2 = (MyStack1) (stack.clone()); stack2.push(\"S1\"); stack2.push(\"S2\"); stack2.push(\"S\"); System.out.println(stack.getSize()); System.out.println(stack2.getSize()); } } class MyStack1 implements Cloneable { private ArrayList