Java 面向对象练习题 代码实现及详解(一)

面向对象对于Java前中后期来说就是尤为重要的,学好对象就成功了一半

写面向对象思路分析尤为重要,我将为面向对象这一知识点不定期更新一个系列练习题 

接下来步入正题

练习题一:

声明一个三角形类Triangle,包含属性:a,b,c,表示三条边,包含几个方法:
1、boolean isRightTriangle():判断是否是一个直角三角形
2、boolean isIsoscelesTriangle():判断是否是一个等腰三角形
3、boolean isEquilateralTriangle():判断是否是一个等边三角形
4、double getArea():根据三条边,用海伦公式求面积
5、double getLength():求周长

整理完思路后我们就开始写功能性代码(完整代码在文章末尾)

一、写出类外访问,实现数据传输

private double a, b, c;
        //个人习惯先写类外访问(好处:把每个方法分为单独个体 可以边写边改) 再写方法
        //添加get、set方法
        public void setA ( double a){
            this.a = a;
        }
        public double getA () {
            return a;
        }
        public void setB ( double b){
            this.b = b;
        }
        public double getB () {
            return b;
        }
        public void setC ( double c){
            this.c = c;
        }
        public double getC () {
            return c;
        }

二、写出方法判断是否是一个直角三角形

(一)第一个判定条件if判定abc三边长是否可以组成一个任意图形

(二)第二个判定条件if判定abc三边是否可以组成一个三角形

(三)结果输出

在布尔型方法中返回值只能返回真(true)或假(false) ,所以本类中无法在方法中出现System.out.print

释义就是符合筛选条件时返回true 不符合任一条件则返回false  后面的方法中同理

//1、boolean isRightTriangle():判断是否是一个直角三角形
        public boolean isRightTriangle () {
            if (a > 0 && b > 0 && c > 0) {//判断abc三值是否合法(图形没有任何一个边长<=0对吧)
                if (a + b > c && a + c > b && b + c > a) {//判断abc三值是否可以组成三角形
                    if (a * a == b * b + c * c || b * b == a * a + c * c || c * c == a * a + b * b) {
                        return true;  //如符合筛选条件  返回真
                    }
                }
            }
            return false; //不符合以上任一条件则返回假
        }

(单独补一下课: 

||:前面的表达式结果为真,则程序不会再执行后面的表达式,直接得出true的结果

&&:前面表达式为假时就不会再执行后面的表达式,直接得出false的结果   )

三、写出方法判断是否是一个等腰三角形

(一)前两个嵌套if存为模板形式    每个方法中不同点就在于第三个判定

(二)三边符合 a=b/b=c/a=c中任一条件,则组成一个一个等腰三角形  输出true   反之false

 //2、boolean isIsoscelesTriangle():判断是否是一个等腰三角形
        public boolean isIsoscelesTriangle () {
            //前两个if存为模板(判断是否可以组成图形;判断是否可以组成三角形)
            if (a > 0 && b > 0 && c > 0) {
                if (a + b > c && a + c > b && b + c > a) {
                    if (a == b || b == c || a == c) {// 判断是否为等腰三角形
                        return true;
                    }
                }
            }
            return false;
        }

四、写出方法判断是否是一个等边三角形

(一)if a=b=c,则组成一个三边相等的三角形  即:等边三角形

(二)需要满足a=b=c,三边相等即输出true   反之false

//3、boolean isEquilateralTriangle():判断是否是一个等边三角形
        public boolean isEquilateralTriangle () {
            if (a > 0 && b > 0 && c > 0) {
                if (a + b > c && a + c > b && b + c > a) {
                    // 判断是否为等边三角形
                    if (a == b && b == c) {
                        return true;
                    }
                }
            }
            return false;
        }

五、写出方法根据三条边,用海伦公式求 面积

(一)新建变量p s满足海伦公式进行运算

 

(二)满足公式条件即数据运算值   反之输出-1(小于0即  非图形)

//4、double getArea():根据三条边,用海伦公式求面积
        public double getArea () {
            if (a > 0 && b > 0 && c > 0) {
                if (a + b > c && a + c > b && b + c > a) {
                    double p = (a + b + c) / 2;
                    double s = (p * (p - a) * (p - b) * (p - c));
                    return Math.sqrt(s);
                }
            }
            return -1;
        }

六、写出方法求周长

(一)满足前两个条件就直接输出a+b+c的值   反之-1

//5、double getLength():求周长
        public double getLength () {
            if (a > 0 && b > 0 && c > 0) {
                if (a + b > c && a + c > b && b + c > a) {
                    return (a + b + c);
                }
            }
            return -1;
        }

七、写出测试类

测试类可凭自己需求写,set设置abc也可以,添加扫描器Scanner定义也可以

public class TriangleCS {
    public static void main(String[] args) {
        Triangle cs=new Triangle();
        cs.setA(6);
        cs.setB(6);
        cs.setC(6);
        System.out.println("false为不是 / true为是");
        System.out.println("是否为直角三角形"+cs.isRightTriangle());
        System.out.println("是否为等腰三角形"+cs.isIsoscelesTriangle());
        System.out.println("是否为等边三角形"+cs.isEquilateralTriangle());
        System.out.println("面积:"+cs.getArea());
        System.out.println( "周长:"+cs.getLength());
    }
}

以下配上全代码,方便各位一键copy

public class Triangle {
        private double a, b, c;
        //个人习惯先写类外访问(好处:把每个方法分为单独个体 可以边写边改) 再写方法
        //添加get、set方法
        public void setA ( double a){
            this.a = a;
        }
        public double getA () {
            return a;
        }
        public void setB ( double b){
            this.b = b;
        }
        public double getB () {
            return b;
        }
        public void setC ( double c){
            this.c = c;
        }
        public double getC () {
            return c;
        }
        //功能代码第一步: 构思  也就是我们要想清楚需求是什么,这样才能更好的写出代码
        //1、boolean isRightTriangle():判断是否是一个直角三角形
        public boolean isRightTriangle () {
            if (a > 0 && b > 0 && c > 0) {//判断abc三值是否合法(图形没有任何一个边长<=0对吧)
                if (a + b > c && a + c > b && b + c > a) {//判断abc三值是否可以组成三角形
                    if (a * a == b * b + c * c || b * b == a * a + c * c || c * c == a * a + b * b) {
                        return true;  //如符合筛选条件  返回真
                    }
                }
            }
            return false; //不符合以上任一条件则返回假
        }

        //2、boolean isIsoscelesTriangle():判断是否是一个等腰三角形
        public boolean isIsoscelesTriangle () {
            //前两个if存为模板(判断是否可以组成图形;判断是否可以组成三角形)
            if (a > 0 && b > 0 && c > 0) {
                if (a + b > c && a + c > b && b + c > a) {
                    if (a == b || b == c || a == c) {// 判断是否为等腰三角形
                        return true;
                    }
                }
            }
            return false;
        }

        //3、boolean isEquilateralTriangle():判断是否是一个等边三角形
        public boolean isEquilateralTriangle () {
            if (a > 0 && b > 0 && c > 0) {
                if (a + b > c && a + c > b && b + c > a) {
                    // 判断是否为等边三角形
                    if (a == b && b == c) {
                        return true;
                    }
                }
            }
            return false;
        }

        //4、double getArea():根据三条边,用海伦公式求面积
        public double getArea () {
            if (a > 0 && b > 0 && c > 0) {
                if (a + b > c && a + c > b && b + c > a) {
                    double p = (a + b + c) / 2;
                    double s = (p * (p - a) * (p - b) * (p - c));
                    return Math.sqrt(s);
                }
            }
            return -1;
        }

        //5、double getLength():求周长
        public double getLength () {
            if (a > 0 && b > 0 && c > 0) {
                if (a + b > c && a + c > b && b + c > a) {
                    return (a + b + c);
                }
            }
            return -1;
        }
    }

测试类

public class TriangleCS {
    public static void main(String[] args) {
        Triangle cs=new Triangle();
        cs.setA(0);
        cs.setB(6);
        cs.setC(6);
        System.out.println("false为不是 / true为是");
        System.out.println("是否为直角三角形"+cs.isRightTriangle());
        System.out.println("是否为等腰三角形"+cs.isIsoscelesTriangle());
        System.out.println("是否为等边三角形"+cs.isEquilateralTriangle());
        System.out.println("面积:"+cs.getArea());
        System.out.println( "周长:"+cs.getLength());
    }
}

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三天不洗头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值