作业帮 > 综合 > 作业

用JAVA编写求解几何图形的应用程序?

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/17 12:32:32
用JAVA编写求解几何图形的应用程序?
编写求解几何图形(如三角形,矩型,圆,多边型)的周长、面积的应用程序,要求用到继承、多态、抽象类、接口、内部类等面向对象程序设计技术的特点.
跪谢,中午12之前用.
重写上面的程序,要求三角形,矩型,圆,多边型的类放到不同的包中,用包的技术组织程序的设计.同时要求程序能从键盘上接受数据以便求解不同的几何图形的周长面积.
提示:从键盘上输入双精度数的一种方法(程序片段)
……
public static void main(String args[]) throws IOException
{
BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
String x;
x=keyin.readLine();
double a=Double.parseDouble(x);
……
用JAVA编写求解几何图形的应用程序?
1. 抽象形状类
package com;
//抽象的形状类
public abstract class Shape{
}
2. 显示接口
package com;
//接口
public interface IDisplay{
void display();//显示图形的基本信息
double getArea();//计算面积
double getGirth();//计算周长
}
3. 三角形类
package com.tri;
import com.*;
//三角形类
public class Triangle extends Shape implements IDisplay{
protected double a;
protected double b;
protected double c;

public Triangle(double a, double b, double c){
this.a = a;
this.b = b;
this.c = c;
}

@Override
public double getArea() {
double s = (a + b + c) / 2;
return Math.sqrt(s*(s-a)*(s-b)*(s-c));
}
@Override
public double getGirth() {
return this.a + this.b + this.c;
}
@Override
public void display() {
System.out.println("三角形");
System.out.println("边长:" + a + ", " + b + ", " + c);
}
}
4. 矩形类
package com.rec;
import com.*;
//矩形类
public class Rectangle extends Shape implements IDisplay {
protected double width;
protected double height;

public Rectangle(double width, double height){
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return this.width * this.height;
}
@Override
public double getGirth() {
return 2 * ( this.width + this.height);
}
@Override
public void display() {
System.out.println("矩形");
System.out.println("宽:" + this.width + ", 高:" + this.height);
}
}
5. 圆类
package com.cir;
import com.*;
//圆类
public class Circle extends Shape implements IDisplay {
protected double radius;

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

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

@Override
public double getGirth() {
return 2 * Math.PI * this.radius;
}
@Override
public void display() {
System.out.println("圆");
System.out.println("半径:" + this.radius);
}
}
6. 正多边形类
package com.mul;
import com.*;
//正多边形类
public class MulSide extends Shape implements IDisplay {
protected double side;//边长
protected int n;//边数

public MulSide(double side, int n){
this.side = side;
this.n = n;
}
@Override
public double getArea() {
return n * side * side * Math.tan((n-2) * Math.PI / (2 * n)) / 4;
}
@Override
public double getGirth() {
return this.side * this.n;
}
@Override
public void display() {
System.out.println("正多边形");
System.out.println("连长:" + this.side + ", 边数:" + this.n);
}
}
7. 主类(测试类)
package com;
import java.util.Scanner;
import com.cir.Circle;
import com.mul.MulSide;
import com.rec.Rectangle;
import com.tri.Triangle;
public class Test22 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double a, b, c;
double width, height;
double radius;
double side;
int n;
IDisplay s;

System.out.println("请输入三角形的基本信息");
System.out.print("边长1:");
a = scan.nextDouble();
System.out.print("边长2:");
b = scan.nextDouble();
System.out.print("边长3:");
c = scan.nextDouble();
s = new Triangle(a, b, c);
s.display();
System.out.println("三角形的面积:" + s.getArea());
System.out.println("三角形的周长:" + s.getGirth());

System.out.println("请输入矩形的基本信息");
System.out.print("宽:");
width = scan.nextDouble();
System.out.print("高:");
height = scan.nextDouble();
s = new Rectangle(width, height);
s.display();
System.out.println("矩形的面积:" + s.getArea());
System.out.println("矩的周长:" + s.getGirth());

System.out.println("请输入圆的基本信息");
System.out.print("半径:");
radius = scan.nextDouble();
s = new Circle(radius);
s.display();
System.out.println("圆的面积:" + s.getArea());
System.out.println("圆的周长:" + s.getGirth());

System.out.println("请输入正多边形的基本信息");
System.out.print("边长:");
side = scan.nextDouble();
System.out.print("边数:");
n = scan.nextInt();
s = new MulSide(side, n);
s.display();
System.out.println("正多边形的面积:" + s.getArea());
System.out.println("正多边形的周长:" + s.getGirth());
}
}
运行测试:
请输入三角形的基本信息
边长1:3
边长2:4
边长3:5
三角形
边长:3.0, 4.0, 5.0
三角形的面积:6.0
三角形的周长:12.0
请输入矩形的基本信息
宽:3
高:4
矩形
宽:3.0, 高:4.0
矩形的面积:12.0
矩的周长:14.0
请输入圆的基本信息
半径:2

半径:2.0
圆的面积:12.566370614359172
圆的周长:12.566370614359172
请输入正多边形的基本信息
边长:2
边数:6
正多边形
连长:2.0, 边数:6
正多边形的面积:10.39230484541326
正多边形的周长:12.0