Java 三角形类:计算周长和面积,判断是否成立

本示例演示如何使用 Java 语言创建一个 Triangle 类,实现三角形的判断,周长计算和面积计算,并演示如何实例化三角形对象并执行操作。

基础版 (70分)

public class Triangle {
    private double a;
    private double b;
    private double c;
    
    public Triangle(double a, double b, double c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
    
    public boolean isValidTriangle() {
        return (a + b > c) && (a + c > b) && (b + c > a);
    }
    
    public double calculatePerimeter() {
        return a + b + c;
    }
    
    public double calculateArea() {
        double s = (a + b + c) / 2;
        return Math.sqrt(s * (s - a) * (s - b) * (s - c));
    }
    
    public static void main(String[] args) {
        Triangle triangle1 = new Triangle(3, 4, 5);
        Triangle triangle2 = new Triangle(1, 2, 5);
        
        if (triangle1.isValidTriangle()) {
            System.out.println('Triangle 1: Perimeter = ' + triangle1.calculatePerimeter() + ', Area = ' + triangle1.calculateArea());
        } else {
            System.out.println('Triangle 1: a=' + triangle1.a + ', b=' + triangle1.b + ', c=' + triangle1.c + ' cannot form a triangle.');
        }
        
        if (triangle2.isValidTriangle()) {
            System.out.println('Triangle 2: Perimeter = ' + triangle2.calculatePerimeter() + ', Area = ' + triangle2.calculateArea());
        } else {
            System.out.println('Triangle 2: a=' + triangle2.a + ', b=' + triangle2.b + ', c=' + triangle2.c + ' cannot form a triangle.');
        }
    }
}

进阶版 (80分)

public class Triangle {
    private double a;
    private double b;
    private double c;
    
    public Triangle(double a, double b, double c) {
        setSides(a, b, c);
    }
    
    public void setSides(double a, double b, double c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
    
    public boolean isValidTriangle() {
        return (a + b > c) && (a + c > b) && (b + c > a);
    }
    
    public double calculatePerimeter() {
        return a + b + c;
    }
    
    public double calculateArea() {
        double s = (a + b + c) / 2;
        return Math.sqrt(s * (s - a) * (s - b) * (s - c));
    }
    
    public static void main(String[] args) {
        Triangle triangle1 = new Triangle(3, 4, 5);
        Triangle triangle2 = new Triangle(1, 2, 5);
        
        if (triangle1.isValidTriangle()) {
            System.out.println('Triangle 1: Perimeter = ' + triangle1.calculatePerimeter() + ', Area = ' + triangle1.calculateArea());
        } else {
            System.out.println('Triangle 1: a=' + triangle1.a + ', b=' + triangle1.b + ', c=' + triangle1.c + ' cannot form a triangle.');
        }
        
        if (triangle2.isValidTriangle()) {
            System.out.println('Triangle 2: Perimeter = ' + triangle2.calculatePerimeter() + ', Area = ' + triangle2.calculateArea());
        } else {
            System.out.println('Triangle 2: a=' + triangle2.a + ', b=' + triangle2.b + ', c=' + triangle2.c + ' cannot form a triangle.');
        }
    }
}

高阶版 (90分)

import java.util.Scanner;

public class Triangle {
    private double a;
    private double b;
    private double c;
    
    public Triangle(double a, double b, double c) {
        setSides(a, b, c);
    }
    
    public void setSides(double a, double b, double c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
    
    public boolean isValidTriangle() {
        return (a + b > c) && (a + c > b) && (b + c > a);
    }
    
    public double calculatePerimeter() {
        return a + b + c;
    }
    
    public double calculateArea() {
        double s = (a + b + c) / 2;
        return Math.sqrt(s * (s - a) * (s - b) * (s - c));
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print('Enter the length of side a: ');
        double a = scanner.nextDouble();
        System.out.print('Enter the length of side b: ');
        double b = scanner.nextDouble();
        System.out.print('Enter the length of side c: ');
        double c = scanner.nextDouble();
        
        Triangle triangle = new Triangle(a, b, c);
        
        if (triangle.isValidTriangle()) {
            System.out.println('Perimeter = ' + triangle.calculatePerimeter() + ', Area = ' + triangle.calculateArea());
        } else {
            System.out.println('a=' + triangle.a + ', b=' + triangle.b + ', c=' + triangle.c + ' cannot form a triangle.');
        }
    }
}

专业版 (-10~+10分)

专业版的评分取决于编程风格和可读性,以下是一些建议来提高代码的可读性和编程风格:

  1. 使用有意义的变量和方法命名,例如使用sideA代替a,使用calculateArea()代替getArea()等,以增加代码可读性。
  2. 添加注释来解释代码的目的和功能,特别是对于复杂的部分或自定义的方法。
  3. 使用适当的缩进和代码格式化,使代码结构清晰易读。
  4. 避免在主类中直接进行逻辑操作,而是将逻辑封装到方法中,保持主方法简洁。
  5. 注意异常处理,例如在高阶版中,应该考虑输入值的合法性和异常情况。
  6. 可以考虑使用Java的JavaDoc注释来生成文档,以便其他开发人员了解类和方法的使用方法。

请注意,以上只是一些建议,您可以根据自己的编程风格和需求进行调整和修改。

本示例展示了如何创建 Triangle 类,并实现了一些基本的操作。您可以根据自己的需求添加更多功能,例如:

  • 判断三角形的类型(等腰、等边、直角)
  • 计算三角形的内角和
  • 计算三角形的重心、内心、外心

希望本示例对您有所帮助。


原文地址: https://www.cveoy.top/t/topic/bB9q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录