武汉理工Java试验报告二.docx
- 文档编号:1606143
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:11
- 大小:17.90KB
武汉理工Java试验报告二.docx
《武汉理工Java试验报告二.docx》由会员分享,可在线阅读,更多相关《武汉理工Java试验报告二.docx(11页珍藏版)》请在冰豆网上搜索。
武汉理工Java试验报告二
武汉理工Java实验报告
(二)
学生
实验
课成
学号
绩
武汉理工大学
学生实验报告书
课程名称
JAVA语言程序设计
开课学院
计算机科学与技术学院
指导老师
学生姓名
专业班级
实验课程名称:
JAVA语言程序设计
实验项目名称
类和对象
实验
成绩
实验者
专业班级
组别
同组者
实验日期
2017年
10月2
日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
1.编写一个抽象的二维几何体接口
Geometricinteface,其中定义求周长和求面积方法,再编写三角形类其实现
Geometricinteface接口,有三个边长属性,编写矩形类继承Geometricinterface接口,有长和宽属性。
要求输入相关属性值后,可以求得相应的周长值和面积值。
附:
求三角形面积
1
s二如9一如一怖一4
L
其中a,b,c分别为三角形三边长,p为半周长,
S为三角形的面积。
2.使用面向对象的思想编写计算器,改进第一次试验的第4题,实现加、减、乘、除操作。
其中包括一个运算抽象类Operation和各个运算的实现。
要求:
(1)使用封装;
(2)使用继承;
(3)使用多态。
(4)实现表达式的加、减、乘、除运算。
计算:
“3+(5*6-4)”
实现思路:
1)创建抽象类Operation及其子运算类;
2)利用数据结构堆栈的思想,解析表达式;(选做,如果不能实现可以定义成员变量运
算数1(numA)和运算数2(numB))
3)编写测试类TestCalc进行验证。
二、实验内容与设计思想
1./*几何*/
(1)/*三角形类*/
publicclassTriangleimplementsGeomlnterface{
doublea,b,c;
〃构造方法
Triangle(intx,inty,intz)
{
a=x;
b=y;
cf;
}
〃求周长
publicvoidperimeter()
{
System.out.println("三角形的周长为
"+(a+b+c));
}
〃求面积
publicvoidarea()
{
doublep=(a+b+c)/2;
doubleS;
S=Math.sqrt(p*(p-a)*(p-b)*(p-c));
System.out.println("三角形的面积为"+S);}
}
(2)长方形类类似三角形类,略。
(3)/*接口*/
interfaceGeomlnterface{
voidperimeter。
;
voidarea();
}
(4)/*主函数*/
publicclassmian{
^publ^^stat^jvoidmain(Strin^^args){^^^
//TODOAuto-generatedmethodstub
Squares=newSquare(4,5);
Trianglet=newTriangle(3,4,5);
s.perimeter();
s.area();
t.perimeter();
t.area();
}
}
2•计算器
(1)importjava.util.Scanner;
classoperator{
privatecharch;
operatorlast;
operatornext;
publicvoidsetCh(charx){
ch=x;
}
publicchargetCh(){
returnch;
}
}
abstractclassOperation{
doublenum1,num2,result;
abstractdoublegetResult();
}
classOperationaddextendsOperation{publicOperationadd(doublea,doubleb){
//TODOAuto-generatedconstructorstubnum1=a;num2=b;
}
doublegetResult(){
returnnum1+num2;
}
}
classOperationsubextendsOperation{publicOperationsub(doublea,doubleb){
//TODOAuto-generatedconstructorstubnum1=a;num2=b;
}
doublegetResult(){
returnnum1-num2;
}
}
classOperationmulextendsOperation{publicOperationmul(doublea,doubleb){
//TODOAuto-generatedconstructorstubnum1=a;num2=b;
}
doublegetResult(){
returnnum1*num2;
}
}
classOperationdivextendsOperation{publicOperationdiv(doublea,doubleb){
//TODOAuto-generatedconstructorstubnum1=a;num2=b;
}
doublegetResult(){
returnnum1/num2;
}
}publicclassDemo2{
staticintjudge(charch1,charch2){
if(ch1=='+'){
switch(ch2){
case'+':
return-1;
•••
—default:
break;
}
}
if(ch1=='-'){switch(ch2){
•••
}
if(ch1=='*'){switch(ch2){
•••
}
}
if(ch1=='/'){switch(ch2){
•••
}
}
if(ch1=='('){
if(ch2==')'){return2;
}else{
return1;
}
}
if(ch仁=')'){return0;
}
if(ch1=='#'){switch(ch2){
•••
}
}
return0;
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
System.out.println("请输入一个以#结尾的表达式:
");^^Scannerscanner=newScanner(System.in);
Stringstr=scanner.next();
if(str.charAt(str」ength()-1)!
=35){
System.out.println("输入错误!
");—return;}
intflag仁0,flag2=0,flag3=0;
numbernum仁nuII,num2=nuII;
numberfirstnum=newnumber();firstnum.setA(O);
operatorfirstoperator=newoperator。
;firstoperator.setCh(#);
operatorop1=firstoperator,op2=nuII;for(inti=0;i charch=str.charAt(i); if(ch<58&&ch>47){ if(flag2==0){ if(firstnum.getA()==0){ firstnum.setA(ch-48); num仁firstnum;flag2=1; }else{ num2=newnumber(); num2.setA(ch-48); flag2=1;} }else{ num2.setA(num2.getA()*10+(ch-48));flag2=1; } }else{flag2=0; op2=newoperator。 ;op2.setCh(ch); flag仁judge(op1.getCh(),op2.getCh()); switch(flag1){ case-1: { switch(op1.getCh()){case'+': { num1.setA(new Operationadd(num1.getA(),num2.getA()).getResult()); op2=null; num2=null; op1=op1」ast; i--; break;} case'-': { numl.setA(new Operationsub(num1.getA(),num2.getA()).getResult()); opl.setCh(ch); op2=null;num2=null; op1=op1」ast; i--; break;}case'*': {num1.setA(new Operationmul(num1.getA(),num2.getA()).getResult()); op1.setCh(ch); op2=null; num2=null; op1=op1」ast; break;}case'/': { numl.setA(new Operationdiv(num1.getA(),num2.getA()).getResult()); op1.setCh(ch); op2=null;num2=null; op1=op1」ast; i--; break; } }break; }case1: {op1.next=op2;op2」ast=op1;op1=op2; if(num2! =null){num1.next=num2;num2」ast=num1; num1=num2; } break; } case2: { ■■■ break; } case0: { ••• break; } case-2: { ••• break; } } } } } (2)/*number*/packagejava实验2; classnumber{privatedoublea;numberlast; numbernext; publicvoidsetA(doublex){a=x; } publicdoublegetA(){returna; } } class
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 武汉理工 Java 试验报告
![提示](https://static.bdocx.com/images/bang_tan.gif)