1、java课后习题 设计一个名为Account类,它包括:一个名为id的int类型私有帐户数据域(默认值0)。一个名为balance的double类型私有帐户数据域(默认值0)。一个名为annualInterestRate的double类型私有数据域存储当前利率(默认值0)。假设所以的帐户都有相同的利率。一个名为dateCreated的Date类型私有数据域存储帐户的开户日期。一个能创建默认帐户的无参构造方法。一个能创建带特定id和初始余额的帐户的构造方法。Id balance annualInterstRate的访问器和修改器。dateCreated的访问器。一个名为getMonthlyInt
2、erestRate()的方法返回月利率。一个名为withDraw的方法从帐户提取特定数额。一个名deposit的方法向帐户存储特定的数额。画出该类的UML图。实现这个类。编写一个测试程序,创建一个帐户ID为1122,余额为20000美元,年利率为%的Account对象。使用withdraw方法取款2500美元,使用deposit方法存款3000美元,然后打印余额,月利息以及这个帐户的开户日期。源程序:public class Account private int id; oString(); 运行结果:余额:月利息:开户日期:Mon Apr 16 20:54:13 CST 2012 设计一个
3、名为Fan的类来表示一个风扇。这个类包括:三个名为SLOW、MEDIUM和FAST而值是1、2和3的常量表示风扇的速度。一个名为speed的int类型私有数据域表示风扇的速度(默认值SLOW)。一个人名为on的boolean类型私有数据域表示风扇是否打开(默认值为false)。一个名为radius的double类型私有数据域表示风扇的半径(默认值5)。一个名为color的string类型数据域表示风扇的颜色(默认值为blue)。这四个数据域的访问器和修改器。一个创建默认风扇的无参构造方法。一个名为toString()方法返回描述风扇的字符串。如果风扇是打开的,那么该方法在一个组合的字符串中返回
4、风扇的速度、颜色和半径。如果风扇没有打开,该方法就会返回一个由“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 in
5、t speed = SLOW; private boolean on = false; private double radius = 5; private String color = blue; public int getSpeed() return speed; public void setSpeed(int speed) = speed; public boolean isOn() return on; public void setOn(boolean on) = on; public double getRadius() return radius; public void s
6、etRadius(double radius) = radius; public String getColor() return color; public void setColor(String color) = color; public Fan() public String toString() if(on=true) return 风扇速度:+()+n +风扇半径:+()+n +风扇颜色:+()+n; else return fan is off+n+风扇半径:+()+n +风扇颜色:+()+n; public static void main(String args) Fan
7、fan = new Fan(); (yello); ; (FAST); (true); Fan fan1 = new Fan(); (bule); (false); ; 运行结果:风扇速度:3风扇半径:风扇颜色:yellofan is off风扇半径:风扇颜色:bule 在一个正n边形中,所以边的长度都相同,且所有角的度数都相同(即这个多边形是等边等角的)。设计一个名为RegularPolygon的类,该类包括:一个名为int型的私有数据域定义多边形的边数,默认值3。一个名为side的double型私有数据域存储边的长度,默认值1。一个名为x的double型私有数据域,它定义多边形中点的x坐标
8、,默认值0。一个名为y的double型私有数据域,它定义多边形中点的y坐标,默认值0。一个创建带默认值的正多边形的无参构造方法。一个能创建带指定边数和边长度、中心在(0,0)的正多边形的构造方法。一个能创建带指定边数和边长度、中心在(x,y)的正多边形的构造方法。所有数据域的访问器和修改器。一个返回多边形周长的方法getPerimeter()。一个返回多边形面积的方法getArea().计算多边形面积的公式是:面积=(n*s*s)/(4*tan(p/n)画出该类的UML图。实现这个类。编写一个测试程序,分别使用无参构造方法、RegularPolygon(6,4)和RegularPolygon(
9、10,4,)创建三个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) = n; = side; public RegularPolygon(int n,double side,double x,double y) thi
10、s(n,side); = x; = y; public int getN() return n; public void setN(int n) = n; public double getSide() return side; public void setSide(double side) = side; public double getX() return x; public void setX(double x) = x; public double getY() return y; public void setY(double y) = y; public double getP
11、erimeter() return n*side; public double getArea() return (n*side*side)/(4*n); public static void main(String args) RegularPolygon reg1 = new RegularPolygon(); reg1的周长为:+()+ + reg1的面积为:+(); RegularPolygon reg2 = new RegularPolygon(6,4); reg1的周长为:+()+ +reg2的面积为:+(); RegularPolygon reg3 = new RegularPo
12、lygon(10,4,; reg3的周长为:+()+ +reg3的面积为:+(); 运行结果:reg1的周长为: reg1的面积为:reg1的周长为: reg2的面积为:reg3的周长为: reg3的面积为:为二次方程式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
13、 r2=(-b-sqr(b2-4ac)/2a这些方法只有在判别式为非负数时才有用。如果判别式为负,这些方法返回0.画出该类的UML图。实现这个类。编写一个测试程序,提示用户输入a、b和c的值,然后显示判别式的结果。如果判别式为正数,显示俩个根;如果判别式为0,显示一个根;否则,显示“The equation has no roots.”(这个方程无根)。参见练习题的运行示例。源程序:import class QuadraticEquation private double a; private double b; private double c; public QuadraticEquati
14、on(double a,double b,double c) = a; = b; = 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()=0) return (-b+(), )/(2*a); else return 0; public double getRoot2() if()=0) retu
15、rn (), )/(2*a); else return 0; public static void main(String args) Scanner input = new Scanner; double x,y,z; x = (); y = (); z = (); QuadraticEquation qua = new QuadraticEquation(x,y,z); 该方程的两个根分别为:+()+ +(); 运行结果:1 -2 1该方程的两个根分别为: (检验密码)一些网站设定了一些制定密码的规则。编写一个方法,检验一个字符串是否是合法的密码。假设密码规则如下:1、 密码必须至少有8个
16、字符2、 密码职能包括字母和数字3、 密码必须至少有2个数字编写一个程序,提示用户输入密码,如果该密码符合规则就显示“Valid Password”,否则显示“Invilid Password”。源程序:import class TestPassword public static int numbersOfcount(String s1) int count = 0; for(int i=0;i();i+) if(i) count+; return count; public static boolean testword(String s2) boolean b = false; for(
17、int i=0;i=2&()=8&testword(s) Valid Password!); else Invalid Password!); public static void main(String args) Scanner input = new Scanner; Enter your password + (including words and numbers); String password = (); testPassword(password); 运行结果:Enter your password(including words and numbers)12abcdddeV
18、alid Password!Enter your password(including words and numbers)Valid Password! 使用下面的方法头编写一个方法,统计每个数字在字符串中出现的次数:public static void main(String args)这个方法统计每个数字在字符串中出现的次数。返回值是10个元素构成的数组,每个元素存储的是一个数字出现的的次数。例如,在执行完int count(“12203AB3”)之后,count0为1,count1为1,count2为2,count3为2.编写一个测试程序,提示用户输入一个字符串,然后显示每个数字在字符
19、串中出现的次数。源程序:import class TestNumbersOfCount public static int count(String s) int count = new int10; for(int i=0;i();i+) if(i) count(i)-0+; return count; public static void main(String args) Scanner input = new Scanner; Enter a String:); String s1 = (); int count = new int10; count = count(s1); for(
20、int i=0;i;i+) count+i+= +counti+ ); 运行结果:Enter a String:abccount0= 1 count1= 2 count2= 3 count3= 0 count4= 0 count5= 0 count6= 0 count7= 0 count8= 0 count9= 2 编写一个方法,检测两个单词是否互为变位词。如果在不记顺序的情况下两个单词包含完全相同的字母,则称这两个单词互为变位词(anagram)。例如,“silent”和“listen”互为变位词。该方法的方法头如下所示:Public static boolean isAnagram(Str
21、ing s1,String s2)编写一个测试程序,提示用户输入两个字符串,如果它们是变位词,则显示“anagram”,否则显示“not anagram”。源程序:import .*;public class TestAnagram public static boolean isAnagram(String s1,String s2) boolean b =true; char ch = (); char ch1 = (); if= for(int i=0;i;i+) for(int j=0;j;j+) if(chi!=chj) b = false; return b; public sta
22、tic void main(String args) Scanner input = new Scanner; Enter a word); String str1 = (); String 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
23、 i=0;i;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;i;i+) arraysi.shape(); abstract class Arrays public abstract void shape();class Rengtange extends Ar
24、rays public void shape() 这是一个矩形。); class Circle extends Arrays public void shape() 这是一个圆。); class MyDouble extends Arrays public void shape() 这是一个双精度浮点数。); class MyIntenger extends Arrays public void shape() 这是一个整数。); 运行结果:这是一个矩形。这是一个圆。这是一个双精度浮点数。这是一个整数。这是一个矩形。这是一个圆。这是一个双精度浮点数。这是一个整数。这是一个矩形。这是一个圆。 (
25、求整数的和)编写两个程序,第一个程序给main方法传入个数不定的整数,每个整数都是一个独立的字符串,然后显示它们的和。第二个程序给main方法传入个数不定的整数构成的同一字符串,数字之间被空格分隔,然后显示它们的和。源程序:import .*;public class Exerce9_14 public static int add(String s) int sum = 0; String ch = ( ); int a = new int; for(int i=0;i;i+) ai = (chi); sum+=ai; return sum; public static void main(
26、String args) Scanner input = new Scanner; 输入一串数字(以空格隔开):); String str1 = (); 运行结果:输入一串数字(以空格隔开):1 2 3The total is:6源程序:public class Exercise9_14b public static void main(String args) int sum = 0; if (args0 = null) 请传个main方法一个参数!); else String s = args0.split( ); for (int i = 0; i ; i+) int count = n
27、ew int; counti=(si); sum += counti; the total is :+sum); 运行结果:Exercise9_14b 1 2 3 4 5The total is 15设计一个名为Triangle的类来扩展GeometricObject类。该类包括:1) 三个名为side1、side2和side3的double数据域表示这个三角形的三条边,它们的默认值是。2) 一个无参构造方法创建默认的三角形。3) 一个能创建带指定side1、side2、和side3的三角形构造方法。4) 一个名为getArea()的方法返回这个三角形的面积。5) 一个名为getPerimeter()的方法返回这个三角形的周长。6) 一个名为to