已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8.7 设计一个名为Account类,它包括:一个名为id的int类型私有帐户数据域(默认值0)。一个名为balance的double类型私有帐户数据域(默认值0)。一个名为annualInterestRate的double类型私有数据域存储当前利率(默认值0)。假设所以的帐户都有相同的利率。一个名为dateCreated的Date类型私有数据域存储帐户的开户日期。一个能创建默认帐户的无参构造方法。一个能创建带特定id和初始余额的帐户的构造方法。Id balance annualInterstRate的访问器和修改器。dateCreated的访问器。一个名为getMonthlyInterestRate()的方法返回月利率。一个名为withDraw的方法从帐户提取特定数额。一个名deposit的方法向帐户存储特定的数额。画出该类的UML图。实现这个类。编写一个测试程序,创建一个帐户ID为1122,余额为20000美元,年利率为4.5%的Account对象。使用withdraw方法取款2500美元,使用deposit方法存款3000美元,然后打印余额,月利息以及这个帐户的开户日期。源程序:public class Account private int id; /账户号码private double balance; /账户余额private double annualInterestRate; /当前利率private java.util.Date dateCreated = new java.util.Date(); /开户日期public Account()this.id = 0;this.balance = 0;this.annualInterestRate = 0;public Account(int id,int balance)this.id = id;this.balance =balance; public int getId()return this.id;public void steId(int id)this.id = id;public double getBalance()return this.balance;public void setBalance(double balance)this.balance = balance;public double getannualInterestRate()return this.annualInterestRate;public void setAnnualInterestRate(double annualInterestRate)this.annualInterestRate = annualInterestRate;public java.util.Date getDateCreated()return this.dateCreated; public double getMonthlyInterestRate()return this.annualInterestRate/12;public double withDraw(double count)this.balance -= count;return this.balance;public double deposit(double count)this.balance += count;return this.balance;public static void main(String args)Account account = new Account(1122,20000);account.setAnnualInterestRate(0.045);account.withDraw(2500);account.deposit(3000);System.out.println(余额:+account.getBalance();System.out.println(月利息: +account.getMonthlyInterestRate()*account.getBalance();System.out.println(开户日期:+account.getDateCreated().toString();运行结果:余额:20500.0月利息:76.875开户日期:Mon Apr 16 20:54:13 CST 20128.8 设计一个名为Fan的类来表示一个风扇。这个类包括:三个名为SLOW、MEDIUM和FAST而值是1、2和3的常量表示风扇的速度。一个名为speed的int类型私有数据域表示风扇的速度(默认值SLOW)。一个人名为on的boolean类型私有数据域表示风扇是否打开(默认值为false)。一个名为radius的double类型私有数据域表示风扇的半径(默认值5)。一个名为color的string类型数据域表示风扇的颜色(默认值为blue)。这四个数据域的访问器和修改器。一个创建默认风扇的无参构造方法。一个名为toString()方法返回描述风扇的字符串。如果风扇是打开的,那么该方法在一个组合的字符串中返回风扇的速度、颜色和半径。如果风扇没有打开,该方法就会返回一个由“fan is off”和风扇颜色及半径组合成的字符串。画出该类的UML图。实现这个类。编写一个测试程序,创建两个Fan对象。将第一个对象设置为最大速度、半径10、颜色为yellow、状态为打开。将第二个对象设置为中等速度、半径为5、颜色为blue、状态为关闭。通过调用它们的toSrting方法显示这些对象。源程序:public class Fan final static int SLOW = 1;final static int MEDIUM = 2;final static int FAST = 3;private int speed = SLOW;private boolean on = false;private double radius = 5;private String color = blue;public int getSpeed() return speed;public void setSpeed(int speed) this.speed = speed;public boolean isOn() return on;public void setOn(boolean on) this.on = on;public double getRadius() return radius;public void setRadius(double radius) this.radius = radius;public String getColor() return color;public void setColor(String color) this.color = color;public Fan()public String toString()if(on=true)return 风扇速度:+this.getSpeed()+n+风扇半径:+this.getRadius()+n+风扇颜色:+this.getColor()+n;elsereturn fan is off+n+风扇半径:+this.getRadius()+n+风扇颜色:+this.getColor()+n;public static void main(String args)Fan fan = new Fan();fan.setColor(yello);fan.setRadius(10.0);fan.setSpeed(FAST);fan.setOn(true);Fan fan1 = new Fan();fan1.setColor(bule);fan1.setOn(false);fan1.setRadius(5.0);System.out.println(fan.toString();System.out.println(fan1.toString();运行结果:风扇速度:3风扇半径:10.0风扇颜色:yellofan is off风扇半径:5.0风扇颜色:bule8.9 在一个正n边形中,所以边的长度都相同,且所有角的度数都相同(即这个多边形是等边等角的)。设计一个名为RegularPolygon的类,该类包括:一个名为int型的私有数据域定义多边形的边数,默认值3。一个名为side的double型私有数据域存储边的长度,默认值1。一个名为x的double型私有数据域,它定义多边形中点的x坐标,默认值0。一个名为y的double型私有数据域,它定义多边形中点的y坐标,默认值0。一个创建带默认值的正多边形的无参构造方法。一个能创建带指定边数和边长度、中心在(0,0)的正多边形的构造方法。一个能创建带指定边数和边长度、中心在(x,y)的正多边形的构造方法。所有数据域的访问器和修改器。一个返回多边形周长的方法getPerimeter()。一个返回多边形面积的方法getArea().计算多边形面积的公式是:面积=(n*s*s)/(4*tan(p/n)画出该类的UML图。实现这个类。编写一个测试程序,分别使用无参构造方法、RegularPolygon(6,4)和RegularPolygon(10,4,5.6,7.8)创建三个RegularPolygon对象。显示每个对象的周长和面积。源程序:public class RegularPolygon private int n = 3;private double side = 1;private double x = 0;private double y = 0;public RegularPolygon()public RegularPolygon(int n,double side)this.n = n;this.side = side;public RegularPolygon(int n,double side,double x,double y)this(n,side);this.x = x;this.y = y;public int getN() return n;public void setN(int n) this.n = n;public double getSide() return side;public void setSide(double side) this.side = side;public double getX() return x;public void setX(double x) this.x = x;public double getY() return y;public void setY(double y) this.y = y;public double getPerimeter()return n*side;public double getArea()return (n*side*side)/(4*Math.tan(Math.PI/n);public static void main(String args) RegularPolygon reg1 = new RegularPolygon();System.out.println(reg1的周长为:+reg1.getPerimeter()+ +reg1的面积为:+reg1.getArea();RegularPolygon reg2 = new RegularPolygon(6,4);System.out.println(reg1的周长为:+reg2.getPerimeter()+ +reg2的面积为:+reg2.getArea();RegularPolygon reg3 = new RegularPolygon(10,4,5.6,7.8);System.out.println(reg3的周长为:+reg3.getPerimeter()+ +reg3的面积为:+reg3.getArea();运行结果:reg1的周长为:3.0 reg1的面积为:0.43301270189221946reg1的周长为:24.0 reg2的面积为:41.569219381653056reg3的周长为:40.0 reg3的面积为:123.107341487010158.11为二次方程式ax2+bx+c=0设计一个名为QuadraticEquation的类。这个类包括:代表三个系数的私有数据域a、b、c。一个参数为a、b和c的构造方法。a、b、c的三个get方法。一个名为getDiscriminant()的方法返回判别式,b2-4ac。一个名为getRoot1()和getRoot2()的方法返回登时的两个根: r1=(-b+sqr(b2-4ac)/2a and r2=(-b-sqr(b2-4ac)/2a这些方法只有在判别式为非负数时才有用。如果判别式为负,这些方法返回0.画出该类的UML图。实现这个类。编写一个测试程序,提示用户输入a、b和c的值,然后显示判别式的结果。如果判别式为正数,显示俩个根;如果判别式为0,显示一个根;否则,显示“The equation has no roots.”(这个方程无根)。参见练习题的3.1运行示例。源程序:import java.util.Scanner;public class QuadraticEquation private double a;private double b;private double c;public QuadraticEquation(double a,double b,double c)this.a = a;this.b = b;this.c = c;public double getA() return a;public double getB() return b;public double getC() return c;public double getDiscriminant()return (b*b-4*a*c);public double getRoot1()if(this.getDiscriminant()=0)return (-b+Math.pow(this.getDiscriminant(), 0.5)/(2*a);elsereturn 0;public double getRoot2()if(this.getDiscriminant()=0)return (-b-Math.pow(this.getDiscriminant(), 0.5)/(2*a);elsereturn 0;public static void main(String args) Scanner input = new Scanner(System.in);double x,y,z;x = input.nextDouble();y = input.nextDouble();z = input.nextDouble();QuadraticEquation qua = new QuadraticEquation(x,y,z);System.out.println(该方程的两个根分别为:+qua.getRoot1()+ +qua.getRoot2();运行结果:1 -2 1该方程的两个根分别为:1.0 1.09.3 (检验密码)一些网站设定了一些制定密码的规则。编写一个方法,检验一个字符串是否是合法的密码。假设密码规则如下:1、 密码必须至少有8个字符2、 密码职能包括字母和数字3、 密码必须至少有2个数字编写一个程序,提示用户输入密码,如果该密码符合规则就显示“Valid Password”,否则显示“Invilid Password”。源程序:import java.util.Scanner;public class TestPassword public static int numbersOfcount(String s1)int count = 0;for(int i=0;is1.length();i+)if(Character.isDigit(s1.charAt(i)count+;return count;public static boolean testword(String s2)boolean b = false;for(int i=0;i=2&s.length()=8&testword(s)System.out.println(Valid Password!);elseSystem.out.println(Invalid Password!);public static void main(String args) Scanner input = new Scanner(System.in);System.out.println(Enter your password +(including words and numbers);String password = input.nextLine();testPassword(password);运行结果:Enter your password(including words and numbers)12abcdddeValid Password!Enter your password(including words and numbers)12332123Valid Password!9.5 使用下面的方法头编写一个方法,统计每个数字在字符串中出现的次数:public static void main(String args)这个方法统计每个数字在字符串中出现的次数。返回值是10个元素构成的数组,每个元素存储的是一个数字出现的的次数。例如,在执行完int count(“12203AB3”)之后,count0为1,count1为1,count2为2,count3为2.编写一个测试程序,提示用户输入一个字符串,然后显示每个数字在字符串中出现的次数。源程序:import java.util.Scanner;public class TestNumbersOfCount public static int count(String s)int count = new int10;for(int i=0;is.length();i+)if(Character.isDigit(s.charAt(i)counts.charAt(i)-0+;return count;public static void main(String args) Scanner input = new Scanner(System.in);System.out.println(Enter a String:);String s1 = input.nextLine();int count = new int10;count = count(s1);for(int i=0;icount.length;i+)System.out.print(count+i+= +counti+ );运行结果:Enter a String:19921202abccount0= 1 count1= 2 count2= 3 count3= 0 count4= 0 count5= 0 count6= 0 count7= 0 count8= 0 count9= 2 9.12 编写一个方法,检测两个单词是否互为变位词。如果在不记顺序的情况下两个单词包含完全相同的字母,则称这两个单词互为变位词(anagram)。例如,“silent”和“listen”互为变位词。该方法的方法头如下所示:Public static boolean isAnagram(String s1,String s2)编写一个测试程序,提示用户输入两个字符串,如果它们是变位词,则显示“anagram”,否则显示“not anagram”。源程序:import java.util.*;public class TestAnagram public static boolean isAnagram(String s1,String s2)boolean b =true;char ch = s1.toCharArray();char ch1 = s2.toCharArray();if(ch.length=ch1.length)for(int i=0;ich.length-1;i+)for(int j=0;jch1.length-1;j+)if(chi!=chj) b = false;return b;public static void main(String args) Scanner input = new Scanner(System.in);System.out.println(Enter a word);String str1 = input.next();String str2 = input.next();System.out.println(isAnagram(str1,str2);运行结果:please input one word:silent please input the other word:isltenAnagram补充题:用一个数组存储不同的对象源程序:public class TestArrays public static void main(String args) Arrays arrays = new Arrays10;for(int i=0;iarrays.length;i+)switch(i%4)case 0:arraysi = new Rengtange();break;case 1:arraysi = new Circle();break;case 2:arraysi = new MyDouble();break;case 3:arraysi = new MyIntenger();break;for(int i=0;iarrays.length;i+)arraysi.shape();abstract class Arrayspublic abstract void shape();class Rengtange extends Arrayspublic void shape()System.out.println(这是一个矩形。);class Circle extends Arrayspublic void shape()System.out.println(这是一个圆。);class MyDouble extends Arrayspublic void shape()System.out.println(这是一个双精度浮点数。);class MyIntenger extends Arrayspublic void shape()System.out.println(这是一个整数。);运行结果:这是一个矩形。这是一个圆。这是一个双精度浮点数。这是一个整数。这是一个矩形。这是一个圆。这是一个双精度浮点数。这是一个整数。这是一个矩形。这是一个圆。9.14 (求整数的和)编写两个程序,第一个程序给main方法传入个数不定的整数,每个整数都是一个独立的字符串,然后显示它们的和。第二个程序给main方法传入个数不定的整数构成的同一字符串,数字之间被空格分隔,然后显示它们的和。源程序:import java.util.*;public class Exerce9_14 public static int add(String s)int sum = 0;String ch = s.split( );int a = new intch.length;for(int i=0;ich.length;i+)ai = Integer.parseInt(chi);sum+=ai;return sum;public static void main(String args) Scanner input = new Scanner(System.in);System.out.println(输入一串数字(以空格隔开):);String str1 = input.nextLine();System.out.println(add(str1);运行结果:输入一串数字(以空格隔开):1 2 3The total is:6源程序:public class Exercise9_14b public static void main(String args) int sum = 0; if (args0 = null)System.out.println(请传个main方法一个参数!); else String s = args0.split( ); for (int i = 0; i s.length; i+) int count = new ints.length; counti=Integer.parseInt(si); sum += counti;System.out.println(the total is :+sum);运行结果:Exercise9_14b 1 2 3 4 5The total is 1511.1设计一个名为Triangle的类来扩展GeometricObject类。该类包括:1) 三个名为side1、side2和side3的double数据域表示这个三角形的三条边,它们的默认值是1.0。2) 一个无参构造方法创建默认的三角形。3) 一个能创建带指定side1、side2、和side3的三角形构造方法。4) 一个名为getArea()的方法返回这个三角形的面积。5) 一个名为getPerimeter()的方法返回这个三角形的周长。6) 一个名为toString()的方法返回这个三角形的字符串描述。计算三角形的面积的公式为:toString()方法的实现如下所示:return“Triangle:side1=”+side1+“ side2=”+side2+“ side3=”+side3;实现这个类。编写一个测试,创建边长为1,1.5,1,颜色为yellow,filled为true的Triangle对象,然后显示他的面积、周长、颜色以及是否被填充。源程序:import java.util.Date;class GeometricObjectprivate String color = white;private boolean filled;private java.util.Date dataCreated;public GeometricObject()dataCreated = new java.util.Date();public GeometricObject(String color,boolean filled)dataCreated = new java.util.Date();this.color = color;this.filled = filled;public String getColor() return color;public void setColor(String color) this.color = color;public boolean isFilled() return filled;public void setFilled(boolean filled) this.filled = filled;public java.util.Date getDataCreated() return dataCreated;public String toString()return created on+dataCreated+ncolor:+color+and filled:+filled;class Triangle extends GeometricObjectprivate double side1 = 1.0,side2 = 1.0,side3 = 1.0;public Triangle()public Triangle(double side1,double side2,double side3,String color,boolean filled)super.setColor(color);super.setFilled(filled);this.side1 = side1;this.side2 = side2;this.side3 = side3;public double getSide1() return side1;public double getSide2() return side2;public double getSide3() return side3;public double getArea()return Math.pow(this.getPerimimeter()*(this.getPerimimeter()-this.side1)*(this.getPerimimeter()-this.side2)*(this.getPerimimeter()-this.side3), 0.5);public double getPerimimeter()return side1+side2+side3;public String toString()return Triangle:side1=+side1+side2=+side2+side3=+side3;public class TestTriangle public static void main(String args) Triangle tri = new Triangle(1,1.5,1,yellow,true);System.out.println(周长为:+tri.getPerimimeter();System.out.println(面积为:+tri.getArea();System.out.println(颜色为:+tri.getColor();System.out.println(是否被填充?+tri.isFilled();运行结果:周长为:3.5面积为:6.614378277661476颜色为:yellow是否被填充?true11.2 设计一个名为Person的类和它的两个名为Student和Employee子类。Employee又有子类:教员Faculty和职员类Staff。每个人都有姓名、地址、电话号码和电子邮件地址。学生有班级状态(大一、大二、大三和大四)。将这些状态定义为常量。一个雇员有办公室、工资、和受聘日期。定义一个MyDate的类,包含数据域year、month、day。教员有办公时间和级别。职员有职务称号。覆盖每个类中的toString方法,显示相应的类名和人名。实现这些类。编写一个测试程序,创建Person、Student、Employee、Faculty和Staff,并调用他们的toString方法。源程序:public class TestPerson public static void main(String args) Person person = new Person(张三,坞城路1号12322.com);Student stu = new Student(李四, 坞城路2号, 12344332234, 122,Student.FIRST);Employee emp = new Employee(王五, 坞城路3号, 1234562234,办公楼1号,102, 4000, new MyData(2012,12,2);Faculty fac = new Faculty(5000, 赵六, 坞城路4号, 1234562934, 102, new MyData(2012,1,2),教授);Staff sta = new Staff(张七, 坞城路4号, 1234562934, 102, 办公楼2号,3000, new MyData(2012,1,2), 标兵);System.out.println(类名:+person.getClass().getName()+ +person.tostring();System.out.println(类名:+stu.getClass().getName()+ +stu.tostring();System.out.println(类名:+emp.getClass().getName()+ +emp.tostring();System.out.println(类名:+fac.getClass().getName()+ +fac.tostring();System.out.println(类名:+sta.getClass().getName()+ +sta.tostring();class Personprivate String name,address,telephone,email;public Person(String name,String address,String telephone,String email) = name;this.address = address;this.telephone = telephone;this.email = email;public String getName() return name;public String getAddress() return address;public String getTelephone() return telephone;public String getEmail() return email;public String tostring()return 人名:+this.getName();class Student extends Personprivate String grade;final static String FIRST = fisherman;final static String SECOND = sophmore;final static String THIRD = senior;final static String FOURTH = junior;public Student(String name, String address, String telephone, String email,String grade) super(name, address, telephone, email);this.grade = grade;public String tostring()return 人名:+this.getName();class Employee extends Personprivate String officer;protected double salarity;private MyData data;public String getOfficer() return officer;public double getSalarity() r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 服装水洗工创新意识评优考核试卷含答案
- 机电综合施工组织设计
- 新型配电系统经济高效的电力电子化柔性配电解决方案
- 航空航天模型加工(多工序数控机床操作调工)理论知识考试题
- 模型泛化能力评估方案
- 勾股定理的证明(专项训练)-2024苏科版八年级数学上册(含解析)
- 第二十一章 一元二次方程单元测试-2025-2026学年九年级数学上学期期中期末挑战满分冲刺卷(人教版)(原卷版)
- 贵州国企招聘2025年贵州省粮食发展集团有限公司招聘(第二批次)笔试历年参考题库附带答案详解
- 2025国家电力投资集团有限公司产业审计中心主任选聘2人笔试历年参考题库附带答案详解
- 2025安徽蚌埠市临港建投集团(港城产投集团)及所属公司第二批社会招聘9人笔试历年参考题库附带答案详解
- 2025年「金属非金属矿山(露天矿山)安全管理人员」考试题附答案
- 毛衣纺织专业知识培训内容课件
- 2025秋期版国开电大本科《理工英语4》一平台综合测试形考任务在线形考试题及答案
- 精油沙龙活动方案
- 2025年四川省公职人员时事政治考试试题(附含答案)
- 我国抽水蓄能开发情况及储能支撑新型电力系统构建的认识与思考
- 壮腰健肾丸课件
- 工程结算审核工作方案(3篇)
- 计量法培训课件
- 初中入团考试重点知识试卷与解析
- 2025关于石油供应的合同协议书
评论
0/150
提交评论