这份Java作业该怎么实现

图形计算器项目:实现一个图形计算器,程序运行后显示界面:请选择图形:1圆2矩形3三角形9退出2请输入矩形长和宽:3.52.5矩形周长是12.0,面积是8.75请选择图形:... 图形计算器项目:

实现一个图形计算器,程序运行后显示界面:
请选择图形:
1 圆 2 矩形 3 三角形 9 退出
2 请输入矩形长和宽:3.5 2.5
矩形周长是 12.0,面积是 8.75
请选择图形:
1 圆 2 矩形 3 三角形 9 退出

程序运行后,给出文本菜单,根据提示输入数字选项,计算不同图形的周长和面积并输出到界面,完成后返回主菜单。 圆输入半径,三角形输入三条边。要求分别生成圆、矩形、三角形类。
如果输入小于等于0的数,应提示“请输入正数:”,重新读取输入。
三角形计算时,先判断输入的3条边是否构成3角形,如不是,则提示“非三角形3条边,请重新输入:”。
圆周律pi定义为3.14f。
给一些思路也是可以的!
展开
 我来答
文档编辑制作共享
2019-05-08
知道答主
回答量:10
采纳率:0%
帮助的人:3.5万
展开全部

所有图形的超类:提供公有属性和方法

package test;
public abstract class Geometry {
protected double girth;
protected double area;
public double getGirth() {
return girth;
}
public double getArea() {
return area;
}
public void shoot(){
System.out.println("周长为:"+girth);
System.out.println("面积为:"+area);
}
}


package test;
public class Circle extends Geometry{
public static final double pi = 3.1415926;
public Circle(double radius){
this.girth = 2*pi*radius;
this.area = pi*(radius*radius);
}
}

矩形

package test;
public class Rec extends Geometry{
public Rec(double w,double h){
this.girth = (w+h)*2;
this.area = w*h;
}
}

三角形

package test;
public class Triangle extends Geometry{
public static boolean check(double l1,double l2,double l3){
if(l1+l2>l3&&(l1-l2<l3||l2-l1<l3) && l3+l2>l1&&(l3-l2<l1||l2-l3<l1) && l1+l3>l2&&(l1-l3<l2||l3-l1<l2)){
return true;
}else{
System.out.println("不是一个三角形!");
return false;
}
}
public Triangle(double l1,double l2,double l3){
this.girth = l1+l2+l3;
double p = (l1 + l2 + l3) / 2;
this.area = Math.sqrt(p * (p - l1) * (p - l2) * (p - l3));
}
}

程序主类

package test;

import java.util.Scanner;

public class Test09 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("请选择图形:1 圆   2 矩形   3 三角形   9 退出");
int i = sc.nextInt();
Geometry g = null;
switch(i){
case 1:
System.out.println("请输入半径:");
double r = sc.nextDouble();
while(!checkNumber(r)){
r = sc.nextDouble();
}
g = new Circle(r);
break;
case 2:
System.out.println("请输入宽:");
double w = sc.nextDouble();
while(!checkNumber(w)){
w = sc.nextDouble();
}
System.out.println("请输入高:");
double h = sc.nextDouble();
while(!checkNumber(h)){
h = sc.nextDouble();
}
g = new Rec(w,h);
break;
case 3:
System.out.println("请输入第一条边长:");
double l1 = sc.nextDouble();
while(!checkNumber(l1)){
l1 = sc.nextDouble();
}
System.out.println("请输入第二条边长:");
double l2 = sc.nextDouble();
while(!checkNumber(l2)){
l2 = sc.nextDouble();
}
System.out.println("请输入第三条边长:");
double l3 = sc.nextDouble();
while(!checkNumber(l3)){
l3 = sc.nextDouble();
}
if(Triangle.check(l1, l2, l3)){
g = new Triangle(l1,l2,l3);
}
break;
case 9:
System.exit(0);
break;
}
if(g!=null){
g.shoot();
}
}

}

public static boolean checkNumber(double a){
if(a<=0){
System.out.println("请输入整数:");
return false;
}else{
return true;
}
}
}
蝶舞何方
2019-05-08 · 超过28用户采纳过TA的回答
知道答主
回答量:50
采纳率:85%
帮助的人:26.8万
展开全部

私聊我,不要钱,。记得采纳就行

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鞠婧祎老婆柠祎
2019-05-08 · TA获得超过727个赞
知道小有建树答主
回答量:2416
采纳率:67%
帮助的人:413万
展开全部
最基本的输入输出考察,你还是自己做吧,不难的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友98b6518
2019-05-09 · TA获得超过199个赞
知道答主
回答量:98
采纳率:86%
帮助的人:25.7万
展开全部

//矩形

public class Rectangle {
    private double rLong,rWide;

    public Rectangle() {
    }

    public Rectangle(double rLong, double rWide) {
        this.rLong = rLong;
        this.rWide = rWide;
    }

    public void setrLong(double rLong) {
        this.rLong = rLong;
    }

    public void setrWide(double rWide) {
        this.rWide = rWide;
    }

    //获取周长
    public double getPerimeter(){
        return rLong*2+rWide*2;
    }

    //获取面积
    public double getArea(){
        return rLong*rWide;
    }
}
//三角形
public class Triangle {
    private double tSide1=-1,tSide2=-1,tSide3=-1;

    public Triangle() {
    }

    public Triangle(double tSide1, double tSide2, double tSide3) {
        this.tSide1 = tSide1;
        this.tSide2 = tSide2;
        this.tSide3 = tSide3;
    }

    public void settSide1(double tSide1) {
        this.tSide1 = tSide1;
    }

    public void settSide2(double tSide2) {
        this.tSide2 = tSide2;
    }

    public void settSide3(double tSide3) {
        this.tSide3 = tSide3;
    }

    //获取周长
    public double getPerimeter(){
        if (isLegitimate()){
            return tSide1+tSide2+tSide3;

        }else {
            return -1;
        }
    }

    //获取面积,如果不合法返回-1
    public double getArea(){
        if (isLegitimate()){
            double p = (tSide1+tSide2+tSide3)/2;
            return ((int)(Math.sqrt(p*(p-tSide1)*(p-tSide2)*(p-tSide3))*100.0))/100.0;
        }else {
            return -1;
        }
    }

    //判断是否合法
    private boolean isLegitimate(){
        if (tSide1!= -1&&tSide2!=-1&&tSide3!=-1){
            if ((tSide1+tSide2>tSide3&&Math.abs(tSide1-tSide2)<tSide3 )
                && (tSide2+tSide3>tSide1&&Math.abs(tSide2-tSide3)<tSide1)
                && (tSide1+tSide3>tSide2&&Math.abs(tSide1-tSide3)<tSide2)
                ){
                return true;
            }
        }
        return false;
    }
}
//圆
public class Circular {
    private double cRadius = 0;
    public Circular() {
    }
    public Circular(double cRadius) {
        this.cRadius = cRadius;
    }

    public void setcRadius(double cRadius) {
        this.cRadius = cRadius;
    }

    public double getPerimeter(){
        return ((int)(Math.PI*2*cRadius*100.0))/100.0;
    }

    public double getArea(){
        return ((int)(Math.PI*cRadius*cRadius*100))/100.0;
    }
}
import java.util.Scanner;
/**
 * Created by DELL on 2019/5/9.
 */
public class TestMain {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("请选择图形:1 圆   2 矩形   3 三角形   9 退出");
            int i = sc.nextInt();
            switch(i){
                case 1:
                    Circular mCircular = new Circular();
                    System.out.println("请输入半径:");
                    double r = sc.nextDouble();
                    while(!checkNumber(r)){
                        r = sc.nextDouble();
                    }
                    mCircular.setcRadius(r);
                    System.out.println("半径为"+r+"的圆:\n周长为:"+mCircular.getPerimeter()+"\n面积为:"+mCircular.getArea()+"\n");
                    break;
                case 2:
                    Rectangle mRectangle = new Rectangle();
                    System.out.println("请输入宽:");
                    double w = sc.nextDouble();
                    while(!checkNumber(w)){
                        w = sc.nextDouble();
                    }
                    mRectangle.setrWide(w);
                    System.out.println("请输入长:");
                    double h = sc.nextDouble();
                    while(!checkNumber(h)){
                        h = sc.nextDouble();
                    }
                    mRectangle.setrLong(h);
                    System.out.println("长为"+h+",宽为"+w+"的矩形:\n周长为:"+mRectangle.getPerimeter()+"\n面积为:"+mRectangle.getArea()+"\n");
                    break;
                case 3:
                    Triangle mTriangle = new Triangle();
                    System.out.println("请输入第一条边长:");
                    double l1 = sc.nextDouble();
                    while(!checkNumber(l1)){
                        l1 = sc.nextDouble();
                    }
                    mTriangle.settSide1(l1);
                    System.out.println("请输入第二条边长:");
                    double l2 = sc.nextDouble();
                    while(!checkNumber(l2)){
                        l2 = sc.nextDouble();
                    }
                    mTriangle.settSide2(l2);
                    System.out.println("请输入第三条边长:");
                    double l3 = sc.nextDouble();
                    while(!checkNumber(l3)){
                        l3 = sc.nextDouble();
                    }
                    mTriangle.settSide3(l3);
                    if (mTriangle.getPerimeter()==-1){
                        System.out.println("您所输入三边:"+l1+","+l2+","+l3+"构不成三角形!");
                    }else {
                        System.out.println("三边为:"+l1+","+l2+","+l3+"的三角形:\n周长为:"+mTriangle.getPerimeter()+"\n面积为:"+mTriangle.getArea()+"\n");
                    }
                    break;
                case 9:
                    System.exit(0);
                    break;
            }
        }
    }
    public static boolean checkNumber(double a){
        if(a<=0){
            System.out.println("请输入整数:");
            return false;
        }else{
            return true;
        }
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式