zoukankan      html  css  js  c++  java
  • 以圆类 Circle 及立体图形类 Solid 为基础设计球类 Sphere

    学习内容:以圆类 Circle 及立体图形类 Solid 为基础设计球类 Sphere

    代码示例:

    package 实验三;

    import java.util.Scanner;

    class Point{
    private double x;
    private double y;
    public Point(double x,double y) {
    this.x=x;
    this.y=y;
    System.out.println("Point Constructor run");
    }
    public void setX(double x) {//设置x坐标
    this.x=x;
    }
    public final double getX(){//返回x坐标
    return x;
    }
    public void setY(double y) {//设置y坐标
    this.y=y;
    }
    public final double getY(){//返回y坐标
    return y;
    }
    public void show() {//显示点的坐标
    System.out.print("Point(X="+x+",Y="+y+")");
    }
    }
    abstract class Plane extends Point{
    private double x;
    private double y;
    public Plane(double x, double y) {
    super(x, y);
    this.x=x;
    this.y=y;
    }
    double length() {
    return 0;
    }
    double area() {
    return 0;
    }
    }
    class Circle extends Plane{

    private double x;
    private double y;
    final double PI=3.14159;
    private double radius;
    public Circle(double x,double y,double radius){
    super(x,y);
    this.x=x;
    this.y=y;
    this.radius=radius;
    System.out.println("Circle Constructorrun");
    }
    public void setR(double r) {
    radius=r;
    }
    public double getR() {
    return radius;
    }
    public void show() {
    System.out.println("Circle(Point("+x+","+y+"),Radius="+radius+")");
    }
    public double area() {
    double area=PI*radius*radius;
    System.out.println("Area="+area);
    return 0;
    }
    public double length() {
    double length=2*PI*radius;
    System.out.println("Length="+length);
    return 0;
    }
    }
    abstract class Solid extends Circle{
    private double x;
    private double y;
    private double radius;
    public Solid(double x, double y, double radius) {
    super(x, y, radius);
    this.x=x;
    this.y=y;
    this.radius=radius;
    }
    public double volume() {//计算体积
    return 0;
    }
    public double s_Area() {//计算表面积
    return 0;
    }
    }

    public class Sphere extends Solid{

    private double x;
    private double y;
    private double radius;
    final double PI=3.14159;
    public void setR(double r) {
    radius=r;
    }
    public double getR() {
    return radius;
    }
    public Sphere(double x, double y, double r) {
    super(x, y, r);
    this.x=x;
    this.y=y;
    radius=r;
    System.out.println("Sphere Constructor run");
    }
    public final void show() {
    System.out.println("Sphere(Circle(Point("+x+","+y+"),Radius="+radius+")");
    }
    public final double s_Area() {
    double sarea=4*PI*radius*radius;
    System.out.println("s_Area="+sarea);
    return 0;
    }
    public final double volume() {
    double volume=(4.0/3.0)*PI*radius*radius*radius;
    System.out.println("Volume="+volume);
    return 0;
    }

    public static void main(String[] args) {
    double r1;
    System.out.println("请输入r:");
    Scanner sc=new Scanner(System.in);
    r1=sc.nextDouble();
    Sphere s1=new Sphere(1,2,3);
    Sphere s2=s1;
    s1.show();
    System.out.println();//换行
    System.out.print("s1的面积:");
    s1.area();
    System.out.println();
    System.out.print("s1的周长:");
    s1.length();
    System.out.println();
    System.out.print("s1的表面积:");
    s1.s_Area();
    System.out.println();
    System.out.print("s1的体积:");
    s1.volume();
    System.out.println("...............................................");
    s2.setR(r1);
    s2.show();
    System.out.println();
    System.out.print("s2的面积:");
    s2.area();
    System.out.println();
    System.out.print("s2的周长:");
    s2.length();
    System.out.println();
    System.out.print("s2的表面积:");
    s2.s_Area();
    System.out.println();
    System.out.print("s2的体积:");
    s2.volume();
    System.out.println();

    }

    }

    运行截图:

    遇到的问题:面积、周长、表面积、体积无法输出

    解决方法:面积、周长、表面积、体积无法输出原因为程序中包含旧方法,设置面积、周长、表面积、体积函数时直接返回了计算公式导致错误。解决方法为在函数中重新设置变量分别表示面积、周长、表面积、体积,输出该变量,返回值设为0.

    明天任务:以点类 Point 及平面图形类 Plane 为基础设计圆类 Circle

  • 相关阅读:
    UVA 11925 Generating Permutations 生成排列 (序列)
    UVA 1611 Crane 起重机 (子问题)
    UVA 11572 Unique snowflakes (滑窗)
    UVA 177 PaperFolding 折纸痕 (分形,递归)
    UVA 11491 Erasing and Winning 奖品的价值 (贪心)
    UVA1610 PartyGame 聚会游戏(细节题)
    UVA 1149 Bin Packing 装箱(贪心)
    topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)
    UVA 1442 Cave 洞穴 (贪心+扫描)
    UVA 1609 Foul Play 不公平竞赛 (构(luan)造(gao)+递归)
  • 原文地址:https://www.cnblogs.com/zyj3955/p/13439429.html
Copyright © 2011-2022 走看看