Java语言程序设计(第3版)沈泽刚主编第101112章课后习题答案_第1页
Java语言程序设计(第3版)沈泽刚主编第101112章课后习题答案_第2页
已阅读5页,还剩8页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java语⾔程序设计(第3版)沈泽刚主编第10,11,12章课后习题答案Java语⾔程序设计(第3版)沈泽刚主编第10,11,12章课后习题答案第10章接⼝和Lambda表达式定义Duck类实现Swimmable接⼝和flyable接⼝。interfaceinterfaceSwimmable{publicvoidswim();}interfaceflyable{publicvoidfly();}publicclassDuckimplementsSwimmable,flyable{@Overridepublicvoidswim(){System.out.println("Icanswimming");}@Overridepublicvoidfly(){System.out.println("Icanfly");}publicstaticvoidmain(String[]args){Duckduck=newDuck();duck.fly();duck.swim();Swimmablesduck//向上转换,⾃动类型转换s.swim();Duckd=(Duck)s;//向下转换,强制类型转换d.fly();d.swim();}}定义⼀个名为RandomIntSequence的类实现IntSequence接⼝。interfaceinterfaceIntSequence{publicbooleanhasNext();publicintnext();}publicclassRandomIntSequenceimplementsIntSequence{privateintn;@OverridepublicbooleanhasNext(){n=(int)(Math.random()*90+10);returntrue;}@Overridepublicintnext(){returnn;}publicstaticvoidmain(String[]args){RandomIntSequencer=newRandomIntSequence();if(r.hasNext()){System.out.println(r.next());}}}设计⼀个名为SequenceTest的类,在其中编写⼀个static⽅法⽤于计算⼀个整数n的平均值publicclasspublicclassSequenceTest{publicstaticdoubleaverage(IntSequenceseq,intn){doublesum=0.0;intm=n;while(seq.hasNext()&&m>0){sum+=seq.next();m--;}returnsum/n;}publicstaticvoidmain(String[]args){RandomIntSequencer=newRandomIntSequence();doubleave=average(r,10);System.out.println(ave);}}修改Employee的定义,让根据员⼯年龄进⾏⽐较publicclasspublicclassEmployeeimplementsComparable<Employee>{intid;intage;doublesalary;Stringname;publicEmployee(intid,Stringname,intage,doublesalary){this.id=id;this.age=age;this.salary==name;}@OverridepublicintcompareTo(Employeeemployee){returnemployee.age-this.age;}publicStringtoString(){return"id="+id+"name="+name+"age="+age+"salary="+salary;}publicstaticvoidmain(String[]args){EmployeeemployeesnewEmployee[]{newEmployee(1"张三newEmployee(2"李四2300[0].compareTo(employees[10){System.out.println(employees[0]);System.out.println(employees[1]);}else{System.out.println(employees[1]);System.out.println(employees[0]);}}}⽤compareTo()⽅法计算连个⾯积之差publicpublicclassCircleimplementsComparable<Circle>{doubleradius;publicCircle(doubleradius){this.radius=radius;}publicdoublegetArea(){returnMath.PI*radius*radius;}@OverridepublicintcompareTo(Circlecircle){return(int)(circle.getArea()-getArea());}publicstaticvoidmain(String[]args){Circle[]circles=newCircle[]{newCircle(1.0),newCircle(2.0),newCircle(3.0)};System.out.println(circles[0].compareTo(circles[1]));}}设计⼀个Position类,该类有两个成员变量x,y表⽰坐标。publicpublicclassPositionimplementsComparable<Position>{intx;inty;publicPosition(intx,inty){this.x=x;this.y=y;}@OverridepublicintcompareTo(Positiono){doubledist1=Math.sqrt(x*x+y*y);doubledist2=Math.sqrt(o.x*o.x+o.y*o.y);return(int)(dist1-dist2);}publicstaticvoidmain(String[]args){Positionposition1=newPosition(1,2);Positionposition2=newPosition(2,4);System.out.println(pareTo(position2));}}11.8实现Student对象按姓名排序。importimport

Arrays;Comparator;classCompimplementsComparator<Student>{@Overridepublicintcompare(Studento1,Studento2){if(pareTo()>0){return1;}elseif(pareTo()<0){return-1;}else{return0;}}}publicclassStudentimplementsComparable<Student>{intid;Stringname;publicStudent(intid,Stringname){this.id=id;=name;}@OverridepublicintcompareTo(Studento){returnthis.id-o.id;}publicStringtoString(){return"id="+id+"name="+name;}publicstaticvoidmain(String[]args){StudentstudentnewStudent[]{newStudent(1,""newStudent(2""newStudent(3"".sort(studentnewComp());for(Students:student){System.out.println(s);}}}10.9编写程序,对字符串数组进⾏降序排序。importimportimportArrays;Comparator;publicclassDescSortimplementsComparator<String>{@Overridepublicintcompare(Stringo1,Stringo2){pareTo(o2);}publicstaticvoidmain(String[]args){String[]s=newString[]{"google","baidu","souhu"};Arrays.sort(s,newDescSort());for(Strings1:s){System.out.println(s1);}}10.12使⽤Lambda表达式实现calculate()⽅法。interfaceinterfaceCalculate{public doublecalculate(doublea,doubleb);}publicclassCalculatorDemo{publicstaticvoidmain(String[]args){Calculatec=(a,b)->Math.pow(a,2)+Math.pow(b,2);inta=10;intb=20;System.out.println(c.calculate(a,b));}}第11章泛型与集合11.1publicclasspublicclassPoint<T>{Tx,y;publicPoint(Tx,Ty){this.x=x;this.y=y;}publicvoidsetX(Tx){this.x=x;}publicTgetX(){returnx;}publicvoidsetY(Ty){this.y=y;}publicTgetY(){returny;}publicvoidtranslate(Tx,Ty){this.x=x;this.y=y;}publicStringtoString(){return"x="+x+"y="+y;}publicstaticvoidmain(String[]args){Point<Integer>point1=newPoint<>(1,2);Point<Double>point2=newPoint<>(3.0,4.0);point1.translate(5,6);System.out.println(point1);System.out.println(point2);}}11.4创建⼀个ArrayList对象,在其中添加若⼲元素,编写程序,使⽤3种⽅法将每个字符转换成⼤写。importimportArrayList;Arrays;Iterator;List;publicclassUpperCaseDemo{publicstaticvoidmain(String[]args){List<String>list=newArrayList<>();String[]s={"google","baidu","zijie"};for(inti=0;i<s.length;i++){list.add(s[i]);}for(inti=0;i<list.size();i++){Stringname=list.get(i);name=name.toUpperCase();list.set(i,name);}System.out.println(list);List<String>list1=Arrays.asList(s);Iteratoriterator=list1.iterator();while(iterator.hasNext()){Stringname=(String)iterator.next();name=name.toUpperCase();System.out.print(name+"");}list1.replaceAll(String::toUpperCase);System.out.println(list1);}}importimportHashSetimportimportHashSet;Set;publicclassFindDump{publicstaticvoidmain(String[]args){Strings="IcanIcomeIfly";Set<String>unique=newHashSet<>();Set<String>dump=newHashSet<>();String[]array=s.split("");for(Strings1:array){if(!unique.add(s1)){dump.add(s1);}}System.out.println("dumpSystem.out.println("unique.size.out.println(""+unique);}}11.6编写程序,随机⽣成10个两位整数,将其分别存⼊HashSet和TreeSet对象,然后将他们输⼊,观察输出结果的不同。importimportHashSet;Set;TreeSetpublicclassSetDemo{publicstaticvoidmain(String[]args){Set<Integer>hashSet=newHashSet<>();Set<Integer>treeSet=newTreeSet<>();for(inti=0;i<10;i++){intnum=(int)(Math.random()*10+90);hashSet.add(num);treeSet.add(num);}System.out.println(hashSet);//⽆序不重复System.out.println(treeSet//有序不重复}}11-7编写程序,实现⼀个对象栈类,要求利⽤ArrayList类实现该栈。importimportArrayList;publicclassMyStack<T>{privateArrayList<T>list;publicMyStack(){list=newArrayList<T>();}publicbooleanisEmpty(){returnlist.isEmpty();}publicintgetSize(){returnlist.size()}publicTpeek(){returnlist.get(0);}publicTpop(){returnlist.remove(0);}publicvoidpush(Tt){list.add(0,t);}publicintsearch(Tt){returnlist.indexOf(t);}publicstaticvoidmain(String[]args){MyStack<Integer>list=newMyStack<>();list.push(newInteger(1));list.push(newInteger(2));list.push(newInteger(3));System.out.println(list.getSize());System.out.println(list.isEmpty());System.out.println(list.pop());System.out.println(list.peek());System.out.println(list.search(1));}}假设Employee类包含⼀个int成员id,如果要求Employee可以按id值⽐较⼤⼩,创建⼏个Employee对象,将它们存储到TreeSet中。importimportimportSet;TreeSet;publicclassEmployeeimplementsComparable<Employee>{publicintid;publicStringname;publicEmployee(intid,Stringname){this.id=id;=name;}@OverridepublicintcompareTo(Employeeemployee){returnthis.id-employee.id;}publicStringtoString(){return"id="+id+"name="+name;}publicstaticvoidmain(String[]args){EmployeeemployeesnewEmployee[3newEmployee(1"王国栋newEmployee(3"唐乃乔newEmployee(2"张珂珂[0ts.add(employees[1]);ts.add(employees[2]);for(Employeeemp:ts){System.out.println(emp);}}}编写程序,实现⼀个PriorityQueue对象,将整形数组元素插⼊队列,然后输出并观察结果。importimportimportPriorityQueue;Queue;publicclassPQDemo{publicstaticvoidmain(String[]args){Queue<Integer>queue=newPriorityQueue<>();Integer[]array={1,5,3,7,6,9,8};for(inti=0;i<array.length;i++){queue.add(array[i]);}while(!queue.isEmpty()){System.out.println(queue.poll());}}}编写程序,⽣成⼀个包含1000个随机⽣成的3位数的流,过滤该流,使其仅能包含被7整除或者含有7的数,输出这些数和个数。importimportIntStream;publicclassIntStreamDemo{publicstaticvoidmain(String[]args){int[]nums=newint[1000];for(inti=0;i<nums.length;i++){nums[i]=(int)(Math.random()*900+100);}IntStreamstream=IntStream.of(nums);stream=stream.filter(n->((n%7==0)||(n%10==7)||((n/10)%10==7))||(n/100==7));int[]result=stream.toArray();for(inti=0;i<result.length;i++){System.out.println(result[i]);}System.out.println("满⾜条件的个数:"+result.length);}}importBigIntegerimportBigInteger;Duration;Instant;Arrays;List;publicclassParallelStreamDemo{publicstaticBigIntegerfactorial(longn){BigIntegerresult=newBigInteger("1");for(inti=1;i<=n;i++){result=result.multiply(newBigInteger(i+""));}returnresult;}publicstaticvoidmain(String[]args){List<Integer>list=Arrays.asList(10,20,30,40);Instantbegin=Instant.now();list.parallelStream().map(n->(factorial(n))).forEach(System.out::println);Instantend=Instant.now();System.out.println("使⽤并⾏流使⽤时间:"+Duration.between(begin,end).toMillis()+"毫秒");Instantbegin1=Instant.now();list.stream().map(n->(factorial(n))).forEach(System.out::println);Instantend1=Instant.now();System.out.println("使⽤顺序流使⽤时间:"+Duration.between(begin1,end1).toMillis()+"毫秒");}}第12章异常处理12.1importimportimportInputMismatchException;Scanner;publicclassTest{publicstaticvoidmain(String[]args){try{Scannerinput=newScanner(System.in);System.out.print("请输⼊⼀个double型的圆形半径:");doubleradius=input.nextDouble();System.out.println("Math.PI*radius*radius}catch(InputMismatchExceptione){System.out.println(e);System.out.println("输⼊格式不正确}}}提⽰⽤户输⼊两个整数,然后显⽰它们的和,程序应该在输⼊不正确时,提⽰⽤户再次读取数字。importimportimportInputMismatchException;Scanner;publicclassExceptionDemo{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);booleancontinueInput=true;while(continueInput)try{System.out.print("intainput.nextInt();intb=input.nextInt();intsum=a+b;continueInput=System.out.println("a+b="+sum);}catch(InputMismatchExceptione){System.out.println(e);input.nextLine();}}}⾸先创建⼀个由100个随机选取的整数构成的数组,然后提⽰⽤户输⼊数组下标,程序显⽰对应元素的值,如果输⼊下标越界,则提⽰下标越界。importimportimportRandom;Scanner;publicclassIndexDemo{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);int[]array=newint[100];Randomrandom=newRandom();for(inti=0;i<array.length;i++){array[i]=random.nextInt();}t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论