共回答了12个问题采纳率:91.7%

代码如下。输入参数和计算结果都为整数。具体类型请自行修改。import java.util.Scanner;

public class Test {

public static void main(String [] args){

while(true){

Shape shape = showMenu();

System.out.println("所选图形的周长为:"+shape.getRound());

System.out.println("所选图形的面积为:"+shape.getArea());

shape = null;

}

}

public static Shape showMenu(){

Shape shape = null;

System.out.println("请选择图形:");

System.out.println("1 圆2 矩形3 三角形9 退出");

int option = Shape.getInput();

switch (option) {

case 1:

shape = new Circle();

break;

case 2:

shape = new Rectangle();

break;

case 3:

shape = new Triangle();

break;

case 9:

System.out.println("系统退出!");

System.exit(0);

break;

default:

System.out.println("选项不存在");

shape = showMenu();

break;

}

return shape;

}

}

abstract class Shape{

/**

* 给图形的参数赋值。

* @param sc

*/

abstract void getParam();

/**

* 获取周长

* @return

*/

abstract int getRound();

/**

* 获取面积

* @return

*/

abstract int getArea();

/**

* 获取输入的参数

* @param sc

* @return

*/

public static int getInput(){

int x = Integer.MIN_VALUE;

try{

x = new Scanner(System.in).nextInt();

if(x < 0){

throw new Exception();

}

} catch (Exception e){

System.out.println("输入错误,请重新输入");

x = getInput();

}

return x;

}

}

//矩形

class Rectangle extends Shape{

private int side1;

private int side2;

public Rectangle(){

getParam();

}

void getParam(){

System.out.println("第一条边:");

this.side1 =getInput();

System.out.println("第二条边:");

this.side2 =getInput();

};

int getRound(){

return 2*(side1+side2);

}

int getArea(){

return side1*side2;

}

}

//圆形

class Circle extends Shape{

private int r;

public Circle(){

getParam();

}

void getParam(){

System.out.println("请输入半径:");

this .r = getInput();

}

int getRound(){

return (int) (2*Math.PI*r);

}

int getArea(){

return (int) (Math.PI*r*r);

}

}

//三角形

class Triangle extends Shape{

private int side1;

private int side2;

private int side3;

public Triangle(){

getParam();

}

void getParam(){

System.out.println("第一条边:");

this.side1 = getInput();

System.out.println("第二条边:");

this.side2 = getInput();

System.out.println("第三条边:");

this.side3 = getInput();

if(!isTriangle()){

System.out.println("无法构成三角形,请重新输入");

getParam();

}

}

int getRound(){

return side1+side2+side3;

}

int getArea(){

System.out.println("三角形面积计算稍显复杂,请自行写代码。");

return 0;

}

private boolean isTriangle(){ //根据两边之和大于第三边判断是否能构成三角形

return side1+side2>side3&&side1+side3>side2&&side2+side3>side1;

}

}

1年前

8

java程序运行图形_java编程 要用到继承的方法图形计算器项目: 实现一个图形计算器,程序运行后显示界面:请选择图形: 1 圆 2 矩形...相关推荐

  1. java 运行异常处理_Java编程异常处理和I/O流

    重点: 1.在编写程序时,要正确地使用捕获例外和声明抛出异常的两种例外处理的方法. 2.遇到实际问题时,要根据需要正确使用各种输入/输出流,特别是对中文使用适当的字符输入流. 3.正确使用对象串行化的 ...

  2. java 为什么违例差错控制_JAVA编程思想学习 — 第九章 (违例差错控制)

    1.违例自变量 和 Java 的其他任何对象一样, 需要用 new 在内存堆里创建违例,并需调用一个构建器.在所有标准违例中,存在着两个构建器: 第一个是默认构建器,第二个则需使用一个字串自变量,使我 ...

  3. java标签组件命名_java编程规范之java命名规范

    想要成为一个优秀的程序员,首先要培养良好的编程习惯,为了提高代码的可读性,必须有好的命名规范. 这篇文章是小编结合网上的很多资料整理出来的,若有不当或错误的地方,欢迎大家指正 在文章开始前,为方便阅读 ...

  4. java 延时发送邮件_java编程实现邮件定时发送的方法

    本文实例讲述了java编程实现邮件定时发送的方法.分享给大家供大家参考,具体如下: 最近做项目时客户提出了一个需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些 ...

  5. java猜字母游戏_JAVA编程题-用java编写猜字母游戏

    原标题:JAVA编程题-用java编写猜字母游戏 问题: 猜字母游戏,其游戏规则为: 程序随机产生5个按照一定顺序排列的字符作为猜测的结果,由玩家来猜测此字符串.玩家可以猜测多次,每猜测一次,则由系统 ...

  6. java编程获取屏幕分辨率_Java编程获取当前屏幕分辨率的方法示例

    本文实例讲述了Java编程获取当前屏幕分辨率的方法.分享给大家供大家参考,具体如下: /** * This class implements the functionality of fetching ...

  7. 圆周率 java编程_Java编程中实现计算圆周率的方法

    想在JAVA编程中实现计算圆周率其实挺简单的,下面我们就来介绍2种Java编程中实现计算圆周率的方法,一起来了解下其中的详情吧. 方法一:割圆法 计算公式为: π≈3*2^n*y_n 其中,n代表割圆 ...

  8. java 网络通讯_JAVA编程实现TCP网络通讯的方法示例

    本文实例讲述了JAVA编程实现TCP网络通讯的方法.分享给大家供大家参考,具体如下: TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字 ...

  9. java 抽象封装多态_java面向对象(封装,继承,多态,抽象,接口的定义和实现)...

    1.封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定 ...

最新文章

  1. R语言因子分析FA(factor analysis)步骤实战
  2. 创建Cocos2d-x 3.x项目以及项目结构简要说明
  3. linux 命令篇 -- 新建用户
  4. m_Orchestrate learning system---九、在无法保证是否有图片的情况下,如何保证页面格式...
  5. ERP选型技巧之“三不要一要”
  6. ffplay.c学习-6-⾳视频同步基础
  7. 腾讯云黑石TStack一体机柜斩获2019数博会领先科技成果双重“优秀项目奖”
  8. 【Vegas2010】cnblogs(博客园)排名原来是这样算的~
  9. 在Windows下不使用密码远程登陆Linux
  10. PG13用pg_rman进行备份恢复
  11. NuGet学习笔记001---了解使用NuGet给net快速获取引用
  12. python listbox排序_Python3.3.2 tkinter ttk TreeView percolumn排序只按最后一列排序?
  13. java最长同值路径_力扣——最长同值路径
  14. 2005开启服务器文件夹,vss2005图文教你如何安装与配置?
  15. 【光学】基于matlab模拟单缝夫琅禾费衍射
  16. 高等数学——变限积分求导
  17. 揭秘沃尔玛、腾讯、京东、浙商银行的供应链管理方案
  18. 667. 优美的排列 II
  19. android baseview,Android BaseAdapter:在getView()重新输入时conver...
  20. 如何安装Mac 下的markman破解版

热门文章

  1. 基于虹软使用Java实现人脸识别、人脸比对、活性检测等
  2. Tortoise SVN异常处理
  3. 在Linux操作系统下的PPPoE拨号上网
  4. 儿童生日快乐相册PPT模板
  5. 小米电视微信投屏出现服务器出错,小米盒子电视投屏显示101020错误是怎么回事...
  6. 【安全牛学习笔记】w3af-身份认证
  7. 机器学习中的数学——距离定义(十六):豪斯多夫距离(Hausdorff Distance)
  8. C语言,C++ “xxxx” is ambiguous 的可能错因
  9. 用Apipost校验响应结果实例
  10. 远程监督、弱监督、有监督、半监督到底怎么区分