您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 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;ji;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;ix;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+…+n8888的最大正整数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;m91;m++)System.out.print((char)m+);for(m=97;m123;m++)System.out.print((char)m+);System.out.println();}}classBextendsA{inti;voidg(){for(i=913;i930;i++)System.out.print((char)i+);for(i=931;i938;i++)System.out.print((char)i+);for(i=945;i962;i++)System.out.print((char)i+);for(i=963;i970;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(m1000){MyExceptionexception=newMyException(m);throwexception;}elseSystem.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(ab){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.使用String类的publicStringtoUpperCase()方法可以将一个字符串中的小写字母变成大写字母,使用publicStringtoLowerCase()方法可以将一个字符串中的大写字母变成小写字母。编写一个程序,使用这两个方法实现大小写的转换。答:classTest{publicstaticvoidmain(Stringargs[]){Stringstr=IcanuseJava;System.out.println(要转换的字符串是:+str);Strings=str.toUpperCase();System.out.println(转换成大写字符串是:+s);s=str.toLowerCase();System.out.println(转换成小写字符串是:+s);}}2.使用String类的publicStringconcat(Stringstr)方法可以把调用该方法的字符串与参数指定的字符串连接,把str指定的串连接到当前串的尾部获得一个新的串。编写一个程序通过连接两个串得到一个新串,并输出这个新串。答:classTest{publicstaticvoidmain(Stringargs[]){Stringstr1=Icanu;Stringstr2=seJava;Strings=str1.concat(str2);System.out.println(将字符串+str1+与字符串+str2+连接后得到的新字符串是:);System.out.println(s);}}1.用Data类不带参数的构造方法创建日期,要求日期的输出格式是:星期小时分秒。答:importjava.util.*;importjava.text.*;classTest{publicstaticvoidmain(Stringargs[]){Date时间=newDate();SimpleDateFormats=newSimpleDateFormat(EHH时mm分ss秒);System.out.println(s.format(时间));}}3.计算某年、某月、某日和某年、某月、某日之间的天数间隔。要求年、月、日通过main方法的参数传递到程序中。答:importjava.util.*;classTest{publicstaticvoidmain(Stringargs[]){Calendarc=Calendar.getInstance();c.set(2000,0,1);longtime1=c.getTimeInMillis();c.set(2008,7,8);longtime2=c.getTimeInMillis();longdayCous=(time2-time1)/(1000*60*60*24);System.out.println(2008年8月8日和2000年1月1日相隔+dayCous+天);}}5.使用BigInteger类计算1!+3!+5!+7!+…的前30项的和。答:importjava.math.*;publicclassTest{publicstaticvoidmain(Stringargs[]){B
本文标题:java2实用教程课后习题答案(第三版编程题)
链接地址:https://www.777doc.com/doc-5356413 .html