1、定义一个接口,包括两个方法:求三角形面积和求圆面积;
2、自定义异常类:当三角形的两边长度之和小于第三边,抛出异常;
3、定义一个类,实现上述接口,及异常处理;4、在PUBLIC CLASS中通过键盘输入相应的数值, 当发生异常时,程序会提示异常; 当没有异常发生时,程序会正确输出所求结果;
/*
接口
*/
public interface Method {
void CircularArea(double r);
void TriangleArea(double x, double y, double z) throws TriangleException;
}
/*
实现类
*/
public class MethodImpl implements Method{
@Override
public void CircularArea(double r) {
double p=3.14;
double area=p*r*r;
System.out.println(area);
}
@Override
public void TriangleArea(double x, double y, double z) throws TriangleException {
if (x + y > z && x + z > y && y + z > x) {
double p = (x + y + z) / 2;
double area = Math.sqrt(p * (p - x) * (p - y) * (p - z));
System.out.println(area);
} else {
throw new TriangleException("你输入的数据不能构成三角形");
}
}
}
/*
自定义异常
*/
public class TriangleException extends Exception{
public TriangleException() {
}
public TriangleException(String message) {
super(message);
}
}
/*
Main测试类
*/
public class Main {
public static void main(String[] args) throws TriangleException {
Method m=new MethodImpl();
Scanner sc=new Scanner(System.in);
//圆
System.out.println("请输入圆的半径:");
double r=sc.nextByte();
System.out.print("圆的面积为:");
m.CircularArea(r);
System.out.println("---------------");
//三角形
System.out.println("请输入三角形边a:");
double x=sc.nextByte();
System.out.println("请输入三角形边b:");
double y=sc.nextByte();
System.out.println("请输入三角形边c:");
double z=sc.nextByte();
System.out.print("三角形的面积为:");
m.TriangleArea(x,y,z);
}
}
正常数据运行结果:
有用望采纳
接口
public interface AreaInterface {
Double PI = Double.valueOf(3.14);
void calTriangleArea();
void calCircleArea();
}
自定义异常类
public class CalAreaIException extends Exception {
private String msg;
public CalAreaIException(String msg) {
super(msg);
this.msg = msg;
}
@Override
public void printStackTrace() {
super.printStackTrace();
System.out.println(msg);
}
}
实现类
public class AreaImpl implements AreaInterface{
static final Scanner sc = new Scanner(System.in);
/**
* 计算三角形面积
*/
@Override
public void calTriangleArea() {
System.out.println("请输入三角形是三条边:");
System.out.println("第一条边:");
String a = sc.next();
System.out.println("第二条边:");
String b = sc.next();
System.out.println("第三条边:");
String c = sc.next();
double aa = Double.valueOf(a);
double bb = Double.valueOf(b);
double cc = Double.valueOf(c);
// 判断三条边是否符合规范
if ((aa + bb) > cc
&& (aa + cc) > bb
&& (bb + cc) > aa) {
// 计算三角形面积
double p = (aa + bb + cc) / 2;
double s = Math.sqrt(p*(p-aa)*(p-bb)*(p-cc));
System.out.println("该三角形面积为:" + s);
} else {
try {
throw new CalAreaIException("任意两边之和不能小于第三边!");
} catch (CalAreaIException e) {
e.printStackTrace();
}
}
}
/**
* 计算圆面积
*/
@Override
public void calCircleArea() {
System.out.println("请输入圆的半径:");
String s = sc.next();
double radius = Double.valueOf(s);
double area = PI.doubleValue() * radius * radius;
System.out.println("圆的面积为:" + area);
}
/**
* 测试
* @param args
*/
public static void main(String[] args) {
AreaInterface areaInterface = new AreaImpl();
areaInterface.calTriangleArea();
areaInterface.calCircleArea();
}
}