java课后习题.docx
- 文档编号:4744557
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:27
- 大小:26.98KB
java课后习题.docx
《java课后习题.docx》由会员分享,可在线阅读,更多相关《java课后习题.docx(27页珍藏版)》请在冰豆网上搜索。
java课后习题
设计一个名为Account类,它包括:
一个名为id的int类型私有帐户数据域(默认值0)。
一个名为balance的double类型私有帐户数据域(默认值0)。
一个名为annualInterestRate的double类型私有数据域存储当前利率(默认值0)。
假设所以的帐户都有相同的利率。
一个名为dateCreated的Date类型私有数据域存储帐户的开户日期。
一个能创建默认帐户的无参构造方法。
一个能创建带特定id和初始余额的帐户的构造方法。
IdbalanceannualInterstRate的访问器和修改器。
dateCreated的访问器。
一个名为getMonthlyInterestRate()的方法返回月利率。
一个名为withDraw的方法从帐户提取特定数额。
一个名deposit的方法向帐户存储特定的数额。
画出该类的UML图。
实现这个类。
编写一个测试程序,创建一个帐户ID为1122,余额为20000美元,年利率为%的Account对象。
使用withdraw方法取款2500美元,使用deposit方法存款3000美元,然后打印余额,月利息以及这个帐户的开户日期。
源程序:
publicclassAccount{
privateintid;oString());
}
}
运行结果:
余额:
月利息:
开户日期:
MonApr1620:
54:
13CST2012
设计一个名为Fan的类来表示一个风扇。
这个类包括:
三个名为SLOW、MEDIUM和FAST而值是1、2和3的常量表示风扇的速度。
一个名为speed的int类型私有数据域表示风扇的速度(默认值SLOW)。
一个人名为on的boolean类型私有数据域表示风扇是否打开(默认值为false)。
一个名为radius的double类型私有数据域表示风扇的半径(默认值5)。
一个名为color的string类型数据域表示风扇的颜色(默认值为blue)。
这四个数据域的访问器和修改器。
一个创建默认风扇的无参构造方法。
一个名为toString()方法返回描述风扇的字符串。
如果风扇是打开的,那么该方法在一个组合的字符串中返回风扇的速度、颜色和半径。
如果风扇没有打开,该方法就会返回一个由“fanisoff”和风扇颜色及半径组合成的字符串。
画出该类的UML图。
实现这个类。
编写一个测试程序,创建两个Fan对象。
将第一个对象设置为最大速度、半径10、颜色为yellow、状态为打开。
将第二个对象设置为中等速度、半径为5、颜色为blue、状态为关闭。
通过调用它们的toSrting方法显示这些对象。
源程序:
publicclassFan{
finalstaticintSLOW=1;
finalstaticintMEDIUM=2;
finalstaticintFAST=3;
privateintspeed=SLOW;
privatebooleanon=false;
privatedoubleradius=5;
privateStringcolor="blue";
publicintgetSpeed(){
returnspeed;
}
publicvoidsetSpeed(intspeed){
=speed;
}
publicbooleanisOn(){
returnon;
}
publicvoidsetOn(booleanon){
=on;
}
publicdoublegetRadius(){
returnradius;
}
publicvoidsetRadius(doubleradius){
=radius;
}
publicStringgetColor(){
returncolor;
}
publicvoidsetColor(Stringcolor){
=color;
}
publicFan()
{
}
publicStringtoString()
{
if(on==true)
return"风扇速度:
"+()+"\n"
+"风扇半径:
"+()+"\n"
+"风扇颜色:
"+()+"\n";
else
return"fanisoff"+"\n"+"风扇半径:
"+()+"\n"
+"风扇颜色:
"+()+"\n";
}
publicstaticvoidmain(String[]args)
{
Fanfan=newFan();
("yello");
;
(FAST);
(true);
Fanfan1=newFan();
("bule");
(false);
;
}
}
运行结果:
风扇速度:
3
风扇半径:
风扇颜色:
yello
fanisoff
风扇半径:
风扇颜色:
bule
在一个正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,,)创建三个RegularPolygon对象。
显示每个对象的周长和面积。
源程序:
publicclassRegularPolygon{
privateintn=3;
privatedoubleside=1;
privatedoublex=0;
privatedoubley=0;
publicRegularPolygon()
{
}
publicRegularPolygon(intn,doubleside)
{
=n;
=side;
}
publicRegularPolygon(intn,doubleside,doublex,doubley)
{
this(n,side);
=x;
=y;
}
publicintgetN(){
returnn;
}
publicvoidsetN(intn){
=n;
}
publicdoublegetSide(){
returnside;
}
publicvoidsetSide(doubleside){
=side;
}
publicdoublegetX(){
returnx;
}
publicvoidsetX(doublex){
=x;
}
publicdoublegetY(){
returny;
}
publicvoidsetY(doubley){
=y;
}
publicdoublegetPerimeter()
{
returnn*side;
}
publicdoublegetArea()
{
return((n*side*side)/(4*n)));
}
publicstaticvoidmain(String[]args){
RegularPolygonreg1=newRegularPolygon();
"reg1的周长为:
"+()+""+
"reg1的面积为:
"+());
RegularPolygonreg2=newRegularPolygon(6,4);
"reg1的周长为:
"+()+
""+"reg2的面积为:
"+());
RegularPolygonreg3=newRegularPolygon(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))/2aandr2=(-b-sqr(b2-4ac))/2a
这些方法只有在判别式为非负数时才有用。
如果判别式为负,这些方法返回0.
画出该类的UML图。
实现这个类。
编写一个测试程序,提示用户输入a、b和c的值,然后显示判别式的结果。
如果判别式为正数,显示俩个根;如果判别式为0,显示一个根;否则,显示“Theequationhasnoroots.”(这个方程无根)。
参见练习题的运行示例。
源程序:
importclassQuadraticEquation{
privatedoublea;
privatedoubleb;
privatedoublec;
publicQuadraticEquation(doublea,doubleb,doublec)
{
=a;
=b;
=c;
}
publicdoublegetA(){
returna;
}
publicdoublegetB(){
returnb;
}
publicdoublegetC(){
returnc;
}
publicdoublegetDiscriminant()
{
return(b*b-4*a*c);
}
publicdoublegetRoot1()
{
if()>=0)
return((-b+(),)/(2*a));
else
return0;
}
publicdoublegetRoot2()
{
if()>=0)
return((),)/(2*a));
else
return0;
}
publicstaticvoidmain(String[]args){
Scannerinput=newScanner;
doublex,y,z;
x=();
y=();
z=();
QuadraticEquationqua=newQuadraticEquation(x,y,z);
"该方程的两个根分别为:
"+()+
""+());
}
}
运行结果:
1-21
该方程的两个根分别为:
(检验密码)一些网站设定了一些制定密码的规则。
编写一个方法,检验一个字符串是否是合法的密码。
假设密码规则如下:
1、密码必须至少有8个字符
2、密码职能包括字母和数字
3、密码必须至少有2个数字
编写一个程序,提示用户输入密码,如果该密码符合规则就显示“ValidPassword”,否则显示“InvilidPassword”。
源程序:
importclassTestPassword{
publicstaticintnumbersOfcount(Strings1)
{
intcount=0;
for(inti=0;i<();i++)
{
if(i)))
count++;
}
returncount;
}
publicstaticbooleantestword(Strings2)
{
booleanb=false;
for(inti=0;i<();i++)
{
if(i))||
(i)))
b=true;
else
b=false;
}
returnb;
}
publicstaticvoidtestPassword(Strings)
{
if(numbersOfcount(s)>=2&&()>=8&&testword(s))
"ValidPassword!
");
else
"InvalidPassword!
");
}
publicstaticvoidmain(String[]args){
Scannerinput=newScanner;
"Enteryourpassword"+
"(includingwordsandnumbers)");
Stringpassword=();
testPassword(password);
}
}
运行结果:
Enteryourpassword(includingwordsandnumbers)
12abcddde
ValidPassword!
Enteryourpassword(includingwordsandnumbers)
ValidPassword!
使用下面的方法头编写一个方法,统计每个数字在字符串中出现的次数:
publicstaticvoidmain(String[]args)
这个方法统计每个数字在字符串中出现的次数。
返回值是10个元素构成的数组,每个元素存储的是一个数字出现的的次数。
例如,在执行完int[]count(“12203AB3”)之后,count[0]为1,count[1]为1,count[2]为2,count[3]为2.
编写一个测试程序,提示用户输入一个字符串,然后显示每个数字在字符串中出现的次数。
源程序:
importclassTestNumbersOfCount{
publicstaticint[]count(Strings)
{
int[]count=newint[10];
for(inti=0;i<();i++)
{
if(i)))
count[(i)-'0']++;
}
returncount;
}
publicstaticvoidmain(String[]args){
Scannerinput=newScanner;
"EnteraString:
");
Strings1=();
int[]count=newint[10];
count=count(s1);
for(inti=0;i<;i++)
"count["+i+"]="+count[i]+"");
}
}
运行结果:
EnteraString:
abc
count[0]=1count[1]=2count[2]=3count[3]=0count[4]=0count[5]=0count[6]=0count[7]=0count[8]=0count[9]=2
编写一个方法,检测两个单词是否互为变位词。
如果在不记顺序的情况下两个单词包含完全相同的字母,则称这两个单词互为变位词(anagram)。
例如,“silent”和“listen”互为变位词。
该方法的方法头如下所示:
PublicstaticbooleanisAnagram(Strings1,Strings2)
编写一个测试程序,提示用户输入两个字符串,如果它们是变位词,则显示“anagram”,否则显示“notanagram”。
源程序:
import.*;
publicclassTestAnagram{
publicstaticbooleanisAnagram(Strings1,Strings2)
{
booleanb=true;
char[]ch=();
char[]ch1=();
if==
{
for(inti=0;i<;i++)
{
for(intj=0;j<;j++)
if(ch[i]!
=ch[j])b=false;
}
}
returnb;
}
publicstaticvoidmain(String[]args){
Scannerinput=newScanner;
"Enteraword");
Stringstr1=();
Stringstr2=();
}
}
运行结果:
pleaseinputoneword:
silent
pleaseinputtheotherword:
islten
Anagram
补充题:
用一个数组存储不同的对象
源程序:
publicclassTestArrays{
publicstaticvoidmain(String[]args){
Arrays[]arrays=newArrays[10];
for(inti=0;i<;i++)
{
switch(i%4){
case0:
arrays[i]=newRengtange();
break;
case1:
arrays[i]=newCircle();
break;
case2:
arrays[i]=newMyDouble();
break;
case3:
arrays[i]=newMyIntenger();
break;
}
}
for(inti=0;i<;i++)
arrays[i].shape();
}
}
abstractclassArrays{
publicabstractvoidshape();
}
classRengtangeextendsArrays{
publicvoidshape()
{
"这是一个矩形。
");
}
}
classCircleextendsArrays{
publicvoidshape()
{
"这是一个圆。
");
}
}
classMyDoubleextendsArrays{
publicvoidshape()
{
"这是一个双精度浮点数。
");
}
}
classMyIntengerextendsArrays{
publicvoidshape()
{
"这是一个整数。
");
}
}
运行结果:
这是一个矩形。
这是一个圆。
这是一个双精度浮点数。
这是一个整数。
这是一个矩形。
这是一个圆。
这是一个双精度浮点数。
这是一个整数。
这是一个矩形。
这是一个圆。
(求整数的和)编写两个程序,第一个程序给main方法传入个数不定的整数,每个整数都是一个独立的字符串,然后显示它们的和。
第二个程序给main方法传入个数不定的整数构成的同一字符串,数字之间被空格分隔,然后显示它们的和。
源程序:
import.*;
publicclassExerce9_14{
publicstaticintadd(Strings)
{
intsum=0;
String[]ch=("");
int[]a=newint[];
for(inti=0;i<;i++)
{
a[i]=(ch[i]);
sum+=a[i];
}
returnsum;
}
publicstaticvoidmain(String[]args){
Scannerinput=newScanner;
"输入一串数字(以空格隔开):
");
Stringstr1=();
}
}
运行结果:
输入一串数字(以空格隔开):
123
Thetotalis:
6
源程序:
publicclassExercise9_14b{
publicstaticvoidmain(String[]args){
intsum=0;
if(args[0]==null)
"请传个main方法一个参数!
");
else{
String[]s=args[0].split("");
for(inti=0;i<;i++){
int[]count=newint[];
count[i]=(s[i]);
sum+=count[i];
}
}
"thetotalis:
"+sum);
}
}
运行结果:
Exercise9_14b
"12345"
Thetotalis15
设计一个名为Triangle的类来扩展GeometricObject类。
该类包括:
1)三个名为side1、side2和side3的double数据域表示这个三角形的三条边,它们的默认值是。
2)一个无参构造方法创建默认的三角形。
3)一个能创建带指定side1、side2、和side3的三角形构造方法。
4)一个名为getArea()的方法返回这个三角形的面积。
5)一个名为getPerimeter()的方法返回这个三角形的周长。
6)一个名为to
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课后 习题