java课后习题.docx

上传人:b****4 文档编号:4744557 上传时间:2022-12-08 格式:DOCX 页数:27 大小:26.98KB
下载 相关 举报
java课后习题.docx_第1页
第1页 / 共27页
java课后习题.docx_第2页
第2页 / 共27页
java课后习题.docx_第3页
第3页 / 共27页
java课后习题.docx_第4页
第4页 / 共27页
java课后习题.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

java课后习题.docx

《java课后习题.docx》由会员分享,可在线阅读,更多相关《java课后习题.docx(27页珍藏版)》请在冰豆网上搜索。

java课后习题.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1