面向对象对于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());
}
}