自定义Triangle,其中有:成员x,y和z作为边长,设置边长的方法setTriangle(a,b,c),从键盘输入数值分别给x,y,z赋值。求面积的方法getArea和显示三角型信息(三个边长)的方法showInfo。setTriangle方法中,如果输入的数值不是数字,则抛出异常NumberFormatException,提示重新输入直到输入合法的数据;getArea和showInfo方法中,但三条边不能构成一个三角形时,要抛出自定义异常NotTriangleException。否则显示正确信息。在测试类方法中构建一个Triangle对象,显示三角型信息和面积,要求捕获异常。简单的一个小程序,但是理的不是很清,哪位学长写个看看。

解决方案 »

  1.   

    我提过个思路,首先要构建一个三角形类,然后流程如下:
    1、输入三角形的3边a、b、c,用循环做,输入不符合要求就继续,符合就跳出循环(需要写一个读取函数,读取时判断是否数字)
    2、输入三个边长后判断3个边长是否能构成三角行(需要写一个判断能否构成三角形的函数)
    3、计算三角形面积并输出(根据输入的三个边长计算面积并输出)
      

  2.   

    import java.util.Scanner;
    public class Triangle
    { /**
     * @param args
     */
    private double x,y,z,circle,area;
    public Triangle()
    {
    x=0;
    y=0;
    z=0;
    }
    public void setTriangle(double a,double b,double c)
    {
    x=a;
    y=b;
    z=c;
    }
    public void showInfo()
    {
    double min,max,mid;
    min=Math.min(Math.min(x,y),z);
    max=Math.max(Math.max(x, y), z);
    if(x==min||x==max)
    {
    if((y==min)||(y==max))
    {
    mid=z;
    }
    else 
    {
    mid=y;
    }
    }
    else {
    {
    mid=x;
    }
    }
    try 
    {
    if((max-min<mid)&&(min+mid>max))
    {
    System.out.println("三角形的三边长为:");
    System.out.println("x="+x+"  "+"y="+y+"  "+"z="+z);
    }
    else 
    {
     new NotTriangleException();
    }


    catch (Exception e)
    {
    // TODO: handle exception
    e.printStackTrace();
    }
    }
    public void getArea()
    {
    circle=(x+y+z)/2;
    area=Math.sqrt(circle*(circle-x)*(circle-y)*(circle-z));
    System.out.println("三角形的面积是:"+area);
    }
    class NotTriangleException
    {
    public NotTriangleException()
    {
    System.out.println("不能构成三角形!");
    }
    }
    public static void main(String[] args) 
    {
    // TODO Auto-generated method stub
    Triangle triangle=new Triangle();
     double x1,y1,z1;
    Scanner sc=new Scanner(System.in);
    try 
    {
                            System.out.println("输入三边长:");
    x1=sc.nextDouble();
    y1=sc.nextDouble();
    z1=sc.nextDouble();
    triangle.setTriangle(x1,y1, z1);
    triangle.showInfo();
    triangle.getArea();
    }
    catch(NumberFormatException ex)
    {
    System.out.println("输入格式不正确!");
    }
    catch (Exception e)
    {
    // TODO: handle exception
    e.printStackTrace();
    }
    }}