java2实用教程课后习题问题详解第三版编程题.docx

上传人:b****1 文档编号:1793126 上传时间:2022-10-24 格式:DOCX 页数:64 大小:30.30KB
下载 相关 举报
java2实用教程课后习题问题详解第三版编程题.docx_第1页
第1页 / 共64页
java2实用教程课后习题问题详解第三版编程题.docx_第2页
第2页 / 共64页
java2实用教程课后习题问题详解第三版编程题.docx_第3页
第3页 / 共64页
java2实用教程课后习题问题详解第三版编程题.docx_第4页
第4页 / 共64页
java2实用教程课后习题问题详解第三版编程题.docx_第5页
第5页 / 共64页
点击查看更多>>
下载资源
资源描述

java2实用教程课后习题问题详解第三版编程题.docx

《java2实用教程课后习题问题详解第三版编程题.docx》由会员分享,可在线阅读,更多相关《java2实用教程课后习题问题详解第三版编程题.docx(64页珍藏版)》请在冰豆网上搜索。

java2实用教程课后习题问题详解第三版编程题.docx

java2实用教程课后习题问题详解第三版编程题

3.编写应用程序,求1!

+2!

+…+10!

答:

classFact

{

publicstaticvoidmain(Stringargs[])

{

intfact,sum=0;

for(inti=1;i<=10;i++)

{

fact=1;

for(intj=1;j<=i;j++)

fact*=j;

sum+=fact;

}

System.out.println("1到10的阶乘之和是:

"+sum);

}

}

4.编写一个应用程序,求100以的全部素数。

答:

classPrimes

{publicstaticvoidmain(Stringargs[])

{intw=1;

for(inti=2;i<=100;i++)

{for(intj=2;j

{w=i%j;

if(w==0)

break;

}

if(w!

=0)

System.out.println(i+"是素数");

}

}

}

5.分别用do―while和for循环计算1+1/2!

+1/3!

+1/4!

+…的前20项和。

答:

①for循环

classSum

{

publicstaticvoidmain(Stringargs[])

{

intfact;

doublesum=0;

for(inti=1;i<=20;i++)

{

fact=1;

for(intj=1;j<=i;j++)

fact*=j;

sum+=1.0/fact;

}

System.out.println(sum);

}

}

②do―while循环

classSum

{

publicstaticvoidmain(Stringargs[])

{

inti=1;

intfact;

doublesum=0;

do

{

fact=1;

intj=0;

while(++j<=i)

fact*=j;

sum+=1.0/fact;

}

while(++i<=20);

System.out.println(sum);

}

}

6.一个数如果恰好等于它的因子之和,这个数就称为“完数”。

编写应用程序,求1000之的所有完数。

答:

classWanshu

{

publicstaticvoidmain(Stringargs[])

{

intx,i,sum;

for(x=1;x<=1000;x++)

{

sum=0;

for(i=1;i

{

if(x%i==0)

sum+=i;

}

if(x==sum)

System.out.println(x+"是完数");

}

}

}

 

7.编写应用程序,分别使用while和for循环计算8+88+888+…前10项之和。

答:

①for循环

classTheSum

{

publicstaticvoidmain(Stringargs[])

{

longsum=0,data=8;

for(inti=1;i<=10;i++)

{

sum=sum+data;

data=data*10+8;

}

System.out.println(sum);

}

}

②while循环

classTheSum

{

publicstaticvoidmain(Stringargs[])

{

longsum=0,data=8,i=0;

while(++i<=10)

{

sum=sum+data;

data=data*10+8;

}

System.out.println(sum);

}

}

8.编写应用程序,输出满足1+2+3+…+n<8888的最大正整数n。

答:

classMaxn

{

publicstaticvoidmain(Stringargs[])

{

intk=1,sum=0;

while((sum+=k)<8888)

k++;

k--;

System.out.println("最大能取到:

"+k);

}

15.模仿例子4.27,编写一个类实现两个接口的程序。

答:

②interface表面积

{

doubleallArea(doubler);

}

interface体积

{

doublevolu(doubler);

}

classSphimplements表面积,体积

{

doublePI=3.14159;

publicdoubleallArea(doubler)

{

return4*PI*r*r;

}

publicdoublevolu(doubler)

{

return4.0/3*PI*r*r*r;

}

}

publicclassTest

{

publicstaticvoidmain(Stringargs[])

{

doubler=5.0;

Spha=newSph();

System.out.println("半径为5的球的表面积是:

"+a.allArea(r));

System.out.println("半径为5的球的体积是:

"+a.volu(r));

}

}

 

16.编写一个类A,该类创建的对象可以调用方法f输出英文字母表,然后再编写一个该类的子类B,要求子类B必须继承A类的方法f(不允许重写),子类创建的对象不仅可以调用方法f输出英文字母表,而且调用子类新增的方法g输出希腊字母表。

答:

classA

{

intm;

voidf()

{

for(m=65;m<91;m++)

System.out.print((char)m+"");

for(m=97;m<123;m++)

System.out.print((char)m+"");

System.out.println("");

}

}

classBextendsA

{

inti;

voidg()

{

for(i=913;i<930;i++)

System.out.print((char)i+"");

for(i=931;i<938;i++)

System.out.print((char)i+"");

for(i=945;i<962;i++)

System.out.print((char)i+"");

for(i=963;i<970;i++)

System.out.print((char)i+"");

System.out.println("");

}

}

publicclassTest

{

publicstaticvoidmain(Stringargs[])

{

Bb=newB();

System.out.println("我调用方法f输出英文字母表:

");

b.f();

System.out.println("我调用方法g输出希腊字母表:

");

b.g();

}

}

 

17.编写一个异常类MyException,再编写一个类Student,该类有一个产生异常的方法publicvoidspeak(intm)throwsMyException,要求参数m的值大于1000时,方法抛出一个MyException对象。

最后编写主类,在主类的main方法中用Student创建一个对象,让该对象调用speak方法。

答:

classMyExceptionextendsException

{

Stringstr1;

MyException(intm)

{

str1=m+"出现错误可能造成的原因是取值大于1000";

}

publicvoidshowStr1()

{

System.out.println(str1);

}

}

classStudent

{

publicvoidspeak(intm)throwsMyException

{

if(m>1000)

{

MyExceptionexception=newMyException(m);

throwexception;

}

else

System.out.println(m);

}

}

publicclassTest

{

publicstaticvoidmain(Stringagrs[])

{

intm;

Studentstu1=newStudent();

m=987;

try

{

stu1.speak(m);

m=1234;

stu1.speak(m);

}

catch(MyExceptione)

{

e.showStr1();

}

}

18.编写一个类,该类有一个方法publicintf(inta,intb),该方法返回a和b的最大公约数。

然后再编写一个该类的子类,要求子类重写方法f,而且重写的方法将返回a和b的最小公倍数。

要求在重写的方法的方法体中首先调用被隐藏的方法返回a和b的最大公约数m,然后将乘积(a*b)/m返回。

要求在应用程序的主类中分别使用父类和子类创建对象,并分别调用方法f计算两个正整数的最大公约数和最小公倍数。

答:

classA

{

publicintf(inta,intb)

{

if(a

{

inttemp=0;

temp=a;

a=b;

b=temp;

}

intr=a%b;

while(r!

=0)

{

a=b;

b=r;

r=a%b;

}

returnb;

}

}

classBextendsA

{

publicintf(inta,intb)

{

intm;

m=super.f(a,b);

return(a*b)/m;

}

}

publicclassTest

{

publicstaticvoidmain(Stringargs[])

{

Aa=newA();

System.out.println("18和102的最大公约数是:

"+a.f(18,102));

Bb=newB();

System.out.println("18和102的最小公倍数是:

"+b.f(18,102));

}

}

 1.使用Strin

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

当前位置:首页 > 医药卫生 > 临床医学

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

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