北科大2011Java设计实验报告2.doc_第1页
北科大2011Java设计实验报告2.doc_第2页
北科大2011Java设计实验报告2.doc_第3页
北科大2011Java设计实验报告2.doc_第4页
北科大2011Java设计实验报告2.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java程序设计上机作业(二)学号:姓名:Java程序设计上机题(二)1. 根据下面的要求编程实现复数类ComplexNumber。(1) 复数类ComplexNumber的属性realPart: 实部,代表复数的实数部分。imaginPart: 虚部,代表复数的虚数部分。(2) 复数类ComplexNumber的方法ComplexNumber( ):构造函数,将实部、虚部都置为0。ComplexNumber(double r, double i):构造函数,将实部和虚部分别置为r和i。getRealPart( ):获取复数对象的实部。getImaginaryPart( ):获取复数对象的虚部。setRealPart(double d): 把复数对象的实部设置为d。setImaginaryPart(double d): 把复数对象的虚部设置为plexAdd(ComplexNumber c):将当前对象与c相加,返回所得的结果。complexMinus(ComplexNumber c):将当前对象与形参复数对象相减,返回所得的结果。complexMulti(ComplexNumber c):将当前对象与形参复数对象相乘,返回所得的结果。complexSize():返回当前复数对象的大小,其值为 。toString( ):把当前复数对象的实部、虚部组合成 a + bi的字符串形式返回,其中a和b分别为实部和虚部的数据。创建复数类的对象,对以上方法进行调用。请将源程序文本填入下框:import javax.swing.JOptionPane;/定义复数类public class ComplexNumber double realPart;/实部double imaginPart;/虚部/将实部、虚部都置为0public ComplexNumber()realPart = 0;imaginPart = 0;/将实部和虚部分别置为r和ipublic ComplexNumber(double r, double i)realPart = r;imaginPart = i;/获取复数对象的实部public double getRealPart()String s = JOptionPane.showInputDialog(请输入实部);return realPart = Double.parseDouble( s );/获取复数对象的虚部public double getImaginaryPart()String s = JOptionPane.showInputDialog(请输入虚部);return imaginPart = Double.parseDouble( s );/把复数对象的实部设置为dpublic double setRealPart(double d)return realPart = d;/把复数对象的虚部设置为dpublic double setImaginaryPart(double d)return imaginPart = d;/将当前对象与c相加,返回所得的结果public ComplexNumber complexAdd(ComplexNumber c)ComplexNumber d = new ComplexNumber();d.realPart = this.realPart + c.realPart;d.imaginPart = this.imaginPart + c.imaginPart;return d;/将当前对象与形参复数对象相减,返回所得的结果public ComplexNumber complexMinus(ComplexNumber c)ComplexNumber d = new ComplexNumber();d.realPart = this.realPart - c.realPart;d.imaginPart = this.imaginPart - c.imaginPart;return d;/将当前对象与形参复数对象相乘,返回所得的结果public ComplexNumber complexMulti(ComplexNumber c)ComplexNumber d = new ComplexNumber();d.realPart = this.realPart * c.realPart -this.imaginPart * c.imaginPart;d.imaginPart = this.realPart * c.imaginPart +this.imaginPart * c.realPart;return d;/返回当前复数对象的大小public double complexSize()double d;d = this.realPart * this.realPart + this.imaginPart * this.imaginPart;double r = Math.sqrt( d );return r;/把当前复数对象的实部、虚部组合成 a + bi的字符串形式返回public String toString() String r1 = Double.toString( this.realPart ); String r2 = Double.toString( this.imaginPart ); String s = r1 + + + r2 +i; return s;public static void main(String args) / 创建复数类对象ComplexNumber a = new ComplexNumber();ComplexNumber b = new ComplexNumber(1,2);ComplexNumber c = new ComplexNumber();ComplexNumber d = new ComplexNumber();ComplexNumber e = new ComplexNumber();ComplexNumber f = new ComplexNumber();ComplexNumber g = new ComplexNumber();/对方法进行调用c.getRealPart();c.getImaginaryPart();d.setRealPart( 3 );d.setImaginaryPart( 4 );e = plexAdd( c );f = plexMinus( c );g = plexMulti( c );/输出结果JOptionPane.showMessageDialog(null, a = + a.toString() + nb = + b.toString()+ nc = + c.toString() + nd = + d.toString() + n复数d的大小是: + plexSize() + ne = d + c = + e+nf = d - c = + f + ng = d * c = + g);System.exit( 0 );/end method main/end class ComplexNumber运行结果截图:2. 设计一个抽象类CompareObject,里面有抽象方法CompareTo用于比较两个对象;然后设计一个CompareObject类的子类Position,有x、y、z分别表示其坐标位置,Position类实现CompareTo方法,用于比较两个对象距离原点(0,0,0)的距离之差。创建Position类的对象,对以上方法进行调用。请将源程序文本填入下框:/CompareObjectPosition.javaimport javax.swing.JOptionPane;/抽象类CompareObjectabstract class CompareObjectprivate double x,y,z;public CompareObject(double a, double b, double c)x = a;y = b;z = c;public double getX()return x;public double getY()return y;public double getZ()return z;/抽象方法CompareTopublic abstract double CompareTo( CompareObject d );/CompareObject类的子类Positionfinal class Position extends CompareObjectprivate double l;public Position(double a, double b, double c)super( a, b, c);/将坐标传送给CompareObject的构造函数/用于比较两个对象距离原点(0,0,0)的距离之差public double CompareTo( CompareObject d )double a = Math.sqrt( Math.pow(super.getX(), 2) + Math.pow(super.getY(), 2) + Math.pow(super.getZ(), 2);/对象距离原点的距离double b = Math.sqrt( Math.pow(d.getX(), 2) + Math.pow(d.getY(), 2) + Math.pow(d.getZ(), 2);/d的坐标到原点的距离l = a - b;/两者距离之差return Math.abs( l );/end class Positionpublic class CompareObjectPosition public static void main(String args) Position p1 = new Position(2, 2, 2);Position p2 = new Position(3, 3, 3);JOptionPane.showMessageDialog(null, (2, 2, 2)与(3, 3, 3)分别距离原点(0,0,0)的距离之差为: + p2.CompareTo( p1 );System.exit( 0 );/end method main/end class CompareObjectPosition运行结果截图:3. 将第2题中的功能改用接口来实现。请将源程序文本填入下框:/CompareObjectPosition.javaimport javax.swing.JOptionPane;/抽象类CompareObjectinterface CompareObjectpublic abstract double CompareTo(Position d);/CompareObject类的子类Positionclass Position implements CompareObjectprivate double x,y,z;public Position(double a, double b, double c)x = a;y = b;z = c;/实现CompareObject接口的CompareTo()方法/用于比较两个对象距离原点(0,0,0)的距离之差public double CompareTo( Position d )double a = Math.sqrt( Math.pow(this.x, 2) + Math.pow(this.y, 2) + Math.pow(this.z, 2);/对象距离原点的距离double b = Math.sqrt( Math.pow(d.x, 2) + Math.pow(d.y, 2) + Math.pow(d.z, 2);/d的坐标到原点的距离return Math.abs( a - b );/返回两者距离之差/end class Positionpublic class CompareObjectPosition public static void main(String args) Position p1 = new Position(2, 2, 2);CompareObject p2 = new Position(3, 3, 3);JOptionPane.showMessageDialog(null, (2, 2, 2)与(3, 3, 3)分别距离原点(0,0,0)的距离之差为: + p2.CompareTo(p1);System.exit( 0 ); /end method main/end class CompareObjectPosition 运行结果截图:4. 设计一个学生类Student,其属性有name、age和degree。由Student类派生出本科生类Undergraduate和研究生类Graduate,Undergraduate类增加属性specialty(专业),研究生类增加属性direction(研究方向)。每个类都有构造函数和show方法来输出属性信息。请尽量使用this和super关键字。创建各个类的对象,输出其信息。请将源程序文本填入下框:/ShowStudent.javaimport javax.swing.JOptionPane;/定义抽象类Studentabstract class Studentprivate String name;private int age;private String degree;public Student(String n, int a, String d)name = n;age = a;degree =d;public String getName()return name;public int getAge()return age;public String getDegree()return degree;/定义抽象方法show()public abstract String show();/end abstract class Student/由Student类派生出本科生类Undergraduatefinal class Undergraduate extends Studentprivate String specialty;public Undergraduate(String n, int a, String d, String s)super(n, a, d);specialty = s;public String show()return nname: + super.getName() +nage: + super.getAge() + ndegree: + super.getDegree() +nspecialty: + this.specialty;/end class Undergraduate/由Student类派生出研究生类Graduatefinal class Graduate extends Studentprivate String direction;public Graduate(String n, int a, String d, String dir)super(n, a, d);direction = dir;public String show()return nname: + super.getName() +nage: + super.getAge() + ndegree: + super.getDegree() +ndirection: + this.direction;/end class Graduatepublic class ShowStudent public static void main(String args) /初始化String output = student1;Student student;Undergraduate u1 = new Undergraduate(林海, 20, 本科, 自动化);Graduate g1 = new Graduate(雪原, 25, 研究生, 计算机);student = u1;output += student.show();student = g1;output += nnstudent2 + student.show();/输出结果JOptionPane.showMessageDialog(null, output);System.exit( 0 );/end method main/end class ShowStudent运行结果截图:5. 学校中有教师和学生两类人,而在职研究生既是教师又是学生。设计两个接口StudentInterface和TeacherInterface。其中StudentInterface接口包括setFee和getFee方法,分别用于设置和获取学生的学费;TeacherInterface接口包括setPay和getPay方法,分别用于设置和获取教师的工资。定义一个研究生类Graduate,实现上述两个接口,属性有name、sex、age、fee(学费)和pay(工资)。创建一个研究生类对象,统计他的年收入和学费;如果收入减去学费不足2000元,在屏幕上给出提示。请将源程序文本填入下框:/GraduateFee.javaimport javax.swing.JOptionPane;interface StudentInterface/设置学费public abstract void setFee( float fee );/得到学费public abstract float getFee();interface TeacherInterface/设置收入public abstract void setPay( float pay );/得到收入public abstract float getPay();final class Graduate implements StudentInterface, TeacherInterfaceprivate String name;private String sex;private int age;private float fee,/在职研究生作为学生所交学费 pay;/在职研究生作为老师一年所得工资public Graduate(String n, String s, int a)name = n;sex = s;age = a;public void setFee( float f)fee = f;public float getFee()return fee;public void setPay( float p)pay = p;public float getPay()return pay;public class GraduateFee public static void main(String args) StudentInterface g1 = new Graduate(林海, 男, 24);TeacherInterface g2 = new Graduate(林海, 男, 24);g1.setFee( 5000 );g2.setPay( 6000 );String output = 学费: + g1.getFee() +n年收入: + g2.getPay();if (g2.getPay()-g1.getFee()2000)output += n您的年收入用于支付学费后不足2000!;JOptionPane.showMessageDialog(null, output);System.exit( 0 );/end method main/end class GraduateFee运行结果截图:6. 请设计一个合适的正则表达式来描述3位区号、8位分机号的电话号码,如(010)6233293101062332931。给定字符串str = 咨询电话(01088814653、010)88816888(1)全费学员赠送教材,插班生不赠送教材。国家法定假日正常休息,不另安排补课。(4)全日制班、双休日班自开课一周内可办理调班、退费手续;寒暑班均为开课当日内办理调班、退费手续;已过退费期的插班生一律不予办理调班、退费手续。(5)办理调班、退费手续时所赠教材收回,如有写画或损坏照价付费。(6)咨询电话01088814653、(010)88816888 邮箱:请编写一个程序,从以上字符串查找符合以上正则表达式的字串并输出到屏幕上。请将源程序文本填入下框:/StringMatcher.javaimport java.util.regex.*;import javax.swing.JOptionPane;public class StringMatcher public static void main(String args) String output = n;/初始化输出字符串output /定义模式对象,并用模式d3-d8|(?d3)?d8初始化Pattern p = Ppile(d3-d8|(?d3)?d8);String s1 = 咨询电话(01088814653、010)88816888 +(1)全费学员赠送教材,插班生不赠送教材。 +国家法定假日正常休息,不另安排补课。 +(4)全日制班、双休日班自开课一周内可办理调班、退费手续; +寒暑班均为开课当日内办理调班、退费手续;已过退费期的插班生一律 +不予办理调班、退费手续。(5)办理调班、退费手续时所赠教材收回, +如有写画或损坏照价付费。(6)咨询电话01088814653、 +(010)88816888 邮箱:; / 待匹配的字符序列Matcher m = p.matcher(s1); / 定义匹配对象,用待匹配字符序列初始化while (m.find() String str = m.group(); output += 从 + m.start() + 到 + m.end() + 匹配模式子序列: + str + n; JOptionPane.showMessageDialog(null, output); System.exit( 0 );运行结果截图:7. 编写一个程序,从命令行输入两个整数,用第一个数除以第二个数(结果为整数),打印出运算结果。如果命令行没有输入参数或参数不足,则会产生ArrayIndexOutOfBoun

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论