Java编程:动态计算长方形、正方形、三角形面积
5星 · 超过95%的资源 需积分: 43 52 浏览量
更新于2024-11-10
8
收藏 3KB TXT 举报
该编程任务要求设计一个Java程序,能够根据用户输入的命令行参数数量来计算长方形、正方形和三角形的面积。如果用户输入一个参数,程序应假设计算的是正方形;两个参数代表长方形;三个参数则表示要计算三角形的面积。如果没有参数,程序应通过异常处理显示错误消息。设计中建议使用面向对象的方法,定义一个抽象的父类`Shape`,包含一个抽象方法`area()`,然后为每个形状(正方形、长方形、三角形)创建子类并重写`area()`方法。在`main`方法中利用多态调用这些子类的方法来计算不同形状的面积。
代码部分展示了类结构的初步实现,包括`Shape`抽象类以及`Square`、`Lsquare`(长方形)和`Triangle`(三角形)三个子类。每个子类都有一个`area`方法,但当前实现中都只是打印希腊字母"ε",并未实际计算面积。在`main`方法中,程序提示用户输入形状类型(1代表正方形,2代表长方形,3代表三角形),然后读取相应的参数并根据用户选择创建对应的形状对象,调用`area`方法计算面积。
为了完善这个程序,我们需要在每个子类的`area`方法中进行如下修改:
1. `Square`类:`area`方法应接收一个整数参数代表边长,计算面积为边长的平方。
2. `Lsquare`(长方形)类:`area`方法应接收两个整数参数代表长和宽,计算面积为长乘以宽。
3. `Triangle`(三角形)类:`area`方法应接收三个整数参数代表三条边长,首先计算半周长`s = (a + b + c) / 2`,然后使用海伦公式计算面积为`Math.sqrt(s * (s - a) * (s - b) * (s - c))`。
在`main`方法中,还需要正确地传递参数给`area`方法,并捕获可能的`IOException`和`NumberFormatException`,确保程序在用户输入无效时能优雅地处理错误。
改进后的代码示例如下:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
abstract class Shape {
abstract void area(int... sides);
}
class Square extends Shape {
void area(int side) {
System.out.println(side * side);
}
}
class Rectangle extends Shape {
void area(int length, int width) {
System.out.println(length * width);
}
}
class Triangle extends Shape {
void area(int a, int b, int c) {
int s = (a + b + c) / 2;
System.out.println(Math.sqrt(s * (s - a) * (s - b) * (s - c)));
}
}
public class Test {
public static void main(String[] args) {
int[] inputSides = new int[3];
try (BufferedReader cin = new BufferedReader(new InputStreamReader(System.in))) {
while (true) {
System.out.println("请输入形状类型(1-正方形,2-长方形,3-三角形):");
String inputType = cin.readLine();
int num = Integer.parseInt(inputType);
switch (num) {
case 1:
Square square = new Square();
System.out.println("请输入正方形的边长:");
String sideInput = cin.readLine();
inputSides[0] = Integer.parseInt(sideInput);
square.area(inputSides[0]);
break;
case 2:
Rectangle rectangle = new Rectangle();
System.out.println("请输入长方形的长和宽:");
String[] rectInputs = cin.readLine().split(" ");
inputSides[0] = Integer.parseInt(rectInputs[0]);
inputSides[1] = Integer.parseInt(rectInputs[1]);
rectangle.area(inputSides[0], inputSides[1]);
break;
case 3:
Triangle triangle = new Triangle();
System.out.println("请输入三角形的三边长:");
String[] triInputs = cin.readLine().split(" ");
inputSides[0] = Integer.parseInt(triInputs[0]);
inputSides[1] = Integer.parseInt(triInputs[1]);
inputSides[2] = Integer.parseInt(triInputs[2]);
triangle.area(inputSides[0], inputSides[1], inputSides[2]);
break;
default:
System.out.println("输入错误,请重新输入!");
break;
}
}
} catch (IOException | NumberFormatException e) {
System.err.println("输入错误,请确保输入数字!");
}
}
}
```
这个改进的版本包含了完整的形状面积计算逻辑,并在用户输入不合法时给出错误提示。现在,程序可以根据用户输入计算正方形、长方形和三角形的面积。
2014-01-01 上传
2013-11-23 上传
2012-08-30 上传
2021-05-08 上传
2020-12-21 上传
2021-02-20 上传
2021-11-28 上传
kuangxue21
- 粉丝: 6
- 资源: 10
最新资源
- From Data Mining to Knowledge Discovery in Database
- developement projects for microsoft office sharepoint server 2007 and windows sharepoint services version 3.0
- C# 语言 规范1.2
- 银行家算法课程设计 源码(记事本)
- c++笔试面试宝典2009版
- 系统架构设计师考试大纲2009
- 数据库课程设计选题.
- spring-framework-reference.pdf
- 元器件封装大全,doc
- JSP技术手册JSP技术手册,详细全面介绍了JSP的基础和高端技术
- AT89C2051管脚图引脚图中文资料
- 全国医学博士入学考生统考英语试题2001
- 2008年下半年全国软件设计师上午试题,好资源
- 电力系统稳态分析试题
- WebWork In Action
- 有效无痛苦的代码评审