当前位置 博文首页 > 美迪的麦柯的博客:Java创建Rec或者Circle,或者Triangle类,实现
测试代码:几个附函数或者类就直接写在一个主函数文件下了。
没分成几个Java文件了。
本例按创建的Circle类,实现comparable接口,创建四个实例,通过sort方法比较几个实例的面积,然后按顺序输出显示。(其他的稍微改一下类文件,增加或者减少方法。)
package server;//我使用的是server包,就不删了,忘了还要多个对象排序
import java.util.Scanner;
public class Main
{
//主函数表示测试Test函数
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
//分别按照提示语输入每个圆的半径
System.out.print("Enter the radius of Circle1: ");
double radius1=input.nextDouble();
System.out.print("Enter the radius of Circle2: ");
double radius2=input.nextDouble();
System.out.print("Enter the radius of Circle3: ");
double radius3=input.nextDouble();
System.out.print("Enter the radius of Circle4: ");
double radius4=input.nextDouble();
//输出空格,方便看到圆半径的比较
System.out.println();
//创建以输入圆为ComparableCircle类型的分别以radius为半径的Circle对象
ComparableCircle Circle1=new ComparableCircle(radius1);
ComparableCircle Circle2=new ComparableCircle(radius2);
ComparableCircle Circle3=new ComparableCircle(radius3);
ComparableCircle Circle4=new ComparableCircle(radius4);
//创建以输入圆为ComparableCircle类型的分别从四个Circle对象比较
ComparableCircle Circle5 = (ComparableCircle)Max.max(Circle1, Circle2);
ComparableCircle Circle6 = (ComparableCircle)Max.max(Circle3, Circle4);
ComparableCircle Circle7 = (ComparableCircle)Max.max(Circle5, Circle6);
//分别输出以输入圆半径的面积
System.out.println("The Circle1's Area is " + Circle1.getArea());
System.out.println("The Circle2's Area is " + Circle2.getArea());
System.out.println("The Circle3's Area is " + Circle3.getArea());
System.out.println("The Circle4's Area is " + Circle4.getArea());
System.out.println("The Max Circle's radius is " + Circle7.getRadius());
System.out.println();
//创建初始化数组
ComparableCircle[] circles= {
new ComparableCircle(radius1),
new ComparableCircle(radius2),
new ComparableCircle(radius3),
new ComparableCircle(radius4)
};
//对该数组进行排序
java.util.Arrays.sort(circles);
for(Circle1 circle:circles)
{
System.out.println(circle.getArea());
}
}
}
//创建的Circle1类
class Circle1
{
double radius;
Circle1()
{
radius=1;
}
Circle1(double newRadius)
{
this.radius=newRadius;
}
double getArea()
{
return radius*radius*Math.PI;
}
double getPerimeter()
{
return 2*radius*Math.PI;
}
void setRadius(double newRadius)
{
radius=newRadius;
}
public double getRadius()
{
return radius;
}
}
class ComparableCircle extends Circle1 implements Comparable
{
public ComparableCircle(double radius)
{
super(radius);
}
public int compareTo(Object o)
{
if(getArea()>((Circle1) o).getArea())//运行时有点错误,按照提示确定的Object类为Circle1类
{
return 1;
}
else if(getArea()<((Circle1) o).getArea())
{
return -1;
}
else
{
return 0;
}
}
@Override
public String toString()
{
return super.toString()+"Area: "+getArea();
}
//@Override
//public int compareTo(Object o) {
// TODO Auto-generated method stub
//return 0;
}
class Max
{
public static ComparableCircle max
(ComparableCircle o1, ComparableCircle o2)
{
if (o1.compareTo(o2) > 0)
return o1;
else
return o2;
}
}
测试样例输出结果:
比较了四个输入的Circle类型的circle对象,按照半径进行大小排序并输出,然后sort排序输出面积的正序排序结果。
csEND