Java语言程序设计与数据结构(基础篇)课后练习题 第十三章(一)

13.1

package dishisanzhang;

import java.util.Date;

public class GeometricObject {

private String color = "white";
private boolean filled;
private Date dateCreated;

public GeometricObject() {
	dateCreated = new Date();
}

public GeometricObject(String color, boolean filled) {
	dateCreated = new Date();
	this.color = color;
	this.filled = filled;
}

public String getColor() {
	return color;
}

public void setColor(String color) {
	this.color = color;
}

public boolean isFilled() {
	return filled;
}

public void setFilled(boolean filled) {
	this.filled = filled;
}

public Date getDatecreated() {
	return dateCreated;
}

public String toString() {
	return "Created on: " + dateCreated + "\nColor: " + color + "\nFilled: " + filled;
}

}

package dishisanzhang;

import java.util.Scanner;

public class Triangle extends GeometricObject {

private double side1 = 1.0;
private double side2 = 1.0;
private double side3 = 1.0;

public Triangle() {
}

public Triangle(double side1, double side2, double side3) {
	this.side1 = side1;
	this.side2 = side2;
	this.side3 = side3;
}

public void setSide1(double side1) {
	this.side1 = side1;
}

public double getSide1() {
	return side1;
}

public void setSide2(double side2) {
	this.side2 = side2;
}

public double getSide2() {
	return side2;
}

public void setSide3(double side3) {
	this.side3 = side3;
}

public double getSide3() {
	return side3;
}

public double getArea() {
	double result;
	double s = (side1 + side2 + side3) / 2;
	result = Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
	return result;
}

public double getPerimeter() {
	return side1 + side2 + side3;
}

public String toString() {
	return "Triangle:side1=" + side1 + "side2=" + side2 + "side3=" + side3;
}

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner input = new Scanner(System.in);
	Triangle triangle = new Triangle();
	System.out.print("Enter three sides: ");
	double side1 = input.nextDouble();
	double side2 = input.nextDouble();
	double side3 = input.nextDouble();
	triangle = new Triangle(side1, side2, side3);
	System.out.print("Enter the color of the triangle: ");
	input.nextLine();
	String color = input.nextLine();
	System.out.print("Enter whether to fill: ");
	boolean filled = input.nextBoolean();
	triangle.setColor(color);
	triangle.setFilled(filled);

	System.out.println("Area: " + triangle.getArea());
	System.out.println("Perimeter: " + triangle.getPerimeter());
	System.out.println("Color: " + triangle.getColor());
	System.out.println("Filled: " + filled);

}

}

13.2

package dishisanzhang;

import java.util.ArrayList;
import java.util.Arrays;

public class dishisanzhang {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Integer[] n = {1,2,3,4,5,6};
	ArrayList<Number> list = new ArrayList<>(Arrays.asList(n));
	shuffle(list);
	System.out.println(list);
}

public static void shuffle(ArrayList<Number> list){
	Number tmp;
	for(int i=0;i<list.size();i++){
		int tmp1 = (int)(Math.random()*(list.size()));
		tmp = list.get(i);
		list.set(i, list.get(tmp1));
		list.set(tmp1, tmp);
	}
}

}

13.3

package dishisanzhang;

import java.util.ArrayList;
import java.util.Arrays;

public class dishisanzhang {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Integer[] n = {1, 5, 6, 4, 3, 2};
	ArrayList<Number> list = new ArrayList<>(Arrays.asList(n));
	sort(list);
	System.out.println(list);
}

public static void sort(ArrayList<Number> list){
	Number tmp; //下面是一个冒泡排序
	for(int i=0;i<list.size()-1;i++)
		for(int j=0;j<list.size()-i-1;j++)
			if((int)(list.get(j+1))<(int)(list.get(j))){
				tmp = list.get(j);
				list.set(j, j+1);
				list.set(j+1, tmp);
			}
}

}

13.4

看清单!

13.5

package dishisanzhang;

import java.util.Date;

public abstract class GeometricObject implements Comparable< GeometricObject >{

private String color;
private boolean filled;
private Date dateCreated;

protected GeometricObject(){
	dateCreated = new Date();
}

protected GeometricObject(String color,boolean filled){
	this.color = color;
	this.filled = filled;
	dateCreated = new Date();
}

public String getColor(){
	return color;
}

public void setColor(String color){
	this.color = color;
}

public boolean isFilled(){
	return filled;
}

public void setFilled(boolean filled){
	this.filled = filled;
}

public Date getDateCreated(){
	return dateCreated;
}

@Override
public String toString(){
	return "Create on "+dateCreated+"\nColor: "+color+"\n and Filled"+filled;
}

@Override
public int compareTo(GeometricObject o){
	if (getArea() < o.getArea())
    {
        return -1;
    }
    else if (getArea() > o.getArea())
    {
        return 1;
    }
    else
        return 0;
}

public static GeometricObject max(GeometricObject o1,GeometricObject o2){
	if (o1.compareTo(o2) > 0)
    {
        return o1;
    }
    else
        return o2;
}

public abstract double getArea();
public abstract double getPerimeter();

}

package dishisanzhang;

public class Rectangle extends GeometricObject {

private double width;
private double height;

public Rectangle() {
}

public Rectangle(double width, double height) {
	this(width, height, "white", false);
}

public Rectangle(double width, double height, String color, boolean filled) {
	super(color, filled);
	this.width = width;
	this.height = height;
}

public double getWidth() {
	return width;
}

public void setWidth(double width) {
	this.width = width;
}

public double getHeight() {
	return height;
}

public void setHeight(double height) {
	this.height = height;
}

@Override
public double getArea() {
	return width * height;
}

@Override
public double getPerimeter() {
	return 2 * (width + height);
}

@Override
public String toString() {
	return "\nRectangle Width: " + getWidth() + " and Height: " + getHeight();
}

}

package dishisanzhang;

public class Circle extends GeometricObject {

private double radius;

public Circle() {
}

public Circle(double radius) {
	this(radius, "white", false);
}

public Circle(double radius, String color, boolean filled) {
	super(color, filled);
	this.radius = radius;
}

public double getRadius() {
	return radius;
}

@Override
public double getArea() {
	return radius * radius * Math.PI;
}

@Override
public double getPerimeter() {
	return 2 * radius * Math.PI;
}

@Override
public String toString() {
	return "\nCircle Radius : " + getRadius();
}

}

package dishisanzhang;

public class dishisanzhang {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Rectangle r1 = new Rectangle(1,2);
	Rectangle r2 = new Rectangle(2,3);
	System.out.println("The Max: "+GeometricObject.max(r1, r2));
	
	Circle c1 = new Circle(2);
	Circle c2 = new Circle(3);
	System.out.println("The Max: "+GeometricObject.max(c1, c2));
	
}

}

13.6

package dishisanzhang;

public class Circle {

private double radius = 1.0;

public Circle() {
	radius = 1.0;
}

public Circle(double radius) {
	this.radius = radius;
}

public double getArea() {
	return radius * radius * Math.PI;
}

}

package dishisanzhang;

public class ComparableCircle extends Circle implements Comparable< ComparableCircle > {

public ComparableCircle() {
	super();
}

public ComparableCircle(double radius) {
	super(radius);
}

@Override
public int compareTo(ComparableCircle o) {
	if (this.getArea() > o.getArea()) {
		return 1;
	} else if (this.getArea() < o.getArea()) {
		return -1;
	} else
		return 0;
}

}

package dishisanzhang;

public class dishisanzhang {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	ComparableCircle c1 = new ComparableCircle(2.0);
	ComparableCircle c2 = new ComparableCircle(3.0);
	if (c1.compareTo(c2) > 0)
		System.out.println("c1 > c2");
	else if (c1.compareTo(c2) == 0)
		System.out.println("c1 = c2");
	else
		System.out.println("c1 < c2");

}

}

13.7

package dishisanzhang;

import java.util.Date;

public abstract class GeometricObject {
private String color;
private boolean filled;
private Date dateCreated;

protected GeometricObject(){
	dateCreated = new Date();
}

protected GeometricObject(String color,boolean filled){
	this.color = color;
	this.filled = filled;
	dateCreated = new Date();
}

public String getColor(){
	return color;
}

public void setColor(String color){
	this.color = color;
}

public boolean isFilled(){
	return filled;
}

public void setFilled(boolean filled){
	this.filled = filled;
}

@Override
public String toString(){
	return "Created on "+dateCreated+"\nColor: "+color+"\nFilled: "+filled;
}

public abstract double getArea();

public abstract double getPerimeter();

}

package dishisanzhang;

interface Colorable {

public abstract void howToColor();

}

package dishisanzhang;

public class Square extends GeometricObject implements Colorable{

private double width;
private double height;

public Square(){
}
public Square(double width,double height){
	this(width,height,"white",false);
}

public Square(double width, double height, String color, boolean filled) {
    super(color, filled);
    this.width = width;
    this.height = height;
}

@Override
public double getArea() {
    return width * height;
}

@Override
public double getPerimeter() {
    return 2 * (width + height);
}

@Override
public void howToColor(){
	System.out.println("Color all four sides");
}

@Override
public String toString(){
	if(super.isFilled())
		howToColor();
	return super.toString();
}

}

package dishisanzhang;

import java.util.Scanner;

public class dishisanzhang {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner input = new Scanner(System.in);
    GeometricObject[] squares = new Square[5];

    for (int i = 0; i < 5; i++) {
        System.out.println(i + ":Square ");
        System.out.print("\tEnter width: ");
        double width = input.nextDouble();
        System.out.print("\tEnter height: ");
        double height = input.nextDouble();
        System.out.print("\tEnter Color: ");
        String color = input.next();
        System.out.print("\tIs Filled: ");
        boolean filled = input.nextBoolean();
        squares[i] = new Square(width, height, color, filled);
    }

    for (int i = 0; i < 5; i ++) {
        System.out.println(squares[i].toString());
        System.out.println();
    }
}

}

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xupengboo

你的鼓励将是我创作最大的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值