Java编程:动态计算长方形、正方形、三角形面积
5星 · 超过95%的资源 需积分: 43 14 浏览量
更新于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 上传
2020-05-11 上传
2013-11-23 上传
2012-08-30 上传
2021-05-08 上传
2020-12-21 上传
2021-02-20 上传
2021-11-28 上传
kuangxue21
- 粉丝: 6
- 资源: 10
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载