《Java程序设计教程(第2版)课后习题及答案10课后习题.docx》由会员分享,可在线阅读,更多相关《Java程序设计教程(第2版)课后习题及答案10课后习题.docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第10章课后习题参考答案1.有三个雇员,其信息如下。姓名职务年龄工资王振经理405000刘莉莉出纳333200王红秘书252800对雇员信息进行如下操作。(1)创建一个Array Li st对象,将这三个雇员信息存储到这个ArrayList对象中。 (2)将ArrayList对象中的元素显示一遍。(3)在“刘莉莉”前插入一个新雇员,其信息为:张芳副经理38 4200插入后将ArrayList对象中的元素再显示出来。(4)从ArrayList对象中删除“刘莉莉”后再将其中的元素显示出来。 答:import java.util. ArrayList;import java.util.*; clas
2、s Employee String name;String occupation;int age;int salary;public Employee(String n,String o,int age,int s) (name=n;occupations; age二this, age; salary = s; )public String getName() (return name; )public void output() (System. out.println(name+”_”+occupation+“_+age+”_”+salary);public class exercise
3、10_01public static void main(String args)Scanner reader=new Scanner(System.in);String nm,occu;int age,salary;ArrayList employeeList=new ArrayList();Employee e;e=new Employee(“王振,“经理”,40,5000);employeeList.add(e);e=new Employee(文lj莉莉” J 出纳”,33,3200);employeeList.add(e);e二new Employee(“王红 J秘书”,25,2800
4、);employeeList.add(e);Iterator it = employeeList.iterator();while (it.hasNext() (e=(Employee)it.next();e.output();)System.out.println();for(int i=0; iemployeeList.size(); i+) (if(Employee)employeeList.get).getName().equals(“刘莉莉”) (e=new Employee(张芳J副经理”,38,4200);employeeList.add(i,e);break;)it = emp
5、loyeeList.iterator();while (it.hasNext() (e=(Employee)it.next();e.output();)System.out.println();for(int i=0; iemployeeList.size(); i+) (if(Employee)employeeList.get ).getName().equals(刘莉莉) (employeeList.remove(i);break;)it = empl oy eeList. i terator();while (it.hasNext()e=(Employee)it.next(); e.ou
6、tput();)2 .定义注解类用于描述“水果”的信息,水果的信息有:名称、颜色、经销商(包括经销商编 号和名称)、供货商(包括供货商编号、姓名和地址),用自定义的水果注解类标注水果,并能从 注解中提取水果信息。答:import java.Iang.reflect.*;import java.lang.annotation.*;Retention(RetentionPolicy.RUNTIME)元注解,运行时保留注解,必须有,否则注解值读不出 interface FruitDealer定义注解(定义注解元素,都有缺省值public String code() default n001n;pub
7、lic String name() default ”旺旺生鲜超市”; )Retention(RetentionPoIicy.RUNTIME)interface FruitSupplier/定义注解(public String name() default ”南国梨庄园”;public String code() default 002”;public String address() default鞍山;)Retention(RetentionPolicy.RUNTIME)interface FruitColor定义注解(public String value() default 绿色”;)
8、Retention(RetentionPolicy.RUNTIME) in terface FruitName/定义注解public String value() default ”苹果”;) class Fruit FruitName(“香蕉”)public String name;FruitColor(黄色)public String color;为域dealer加注解,给部分元素赋值,其余用缺省值如果注解元素都用缺省值,则直接写尸疝1口匕附FruitDealer(name=n 果果,code= “201 )public String dealer;FruitSupplier(name=莱
9、阳梨”,code=222,address=11l 东”)public String supplier;/域有注解public void setDealer(String m)(dealer=m;)public String getDealer()(return dealer;)public void setSupplier(String supplier)(this.supplier=supplier;)public String getSupplier()(return supplier;)public void setName(String name)(this.name二name;)pu
10、blic String getName()(return name;)public void setColor(String color)(this.color=color;public String getColor()return color;public class exercise 10_02(public static void main(String argsJ)(System.out.println(readAnnotation(Fruit.class);)读注解信息private static String readAnnotation(Class aClass) (Strin
11、g dealer”经销商:”;String supplier”供货商:n;String name=名字:”; String color=颜色:”;Field fields口二aClass.getDeclaredFields();获取 Fruit 类的所有字段for(Field aField :fields)/对每一个字段判断 (字段的注解是FruitDealer类型if(aField.isAnnotationPresent(FruitDealer.class) (FruitDealer aDealer;/声明一个注解变量调用getAnnotation方法获得在aField域上的注解“实例” a
12、Dealer=(FruitDealer)aField.getAnnotation(FruitDealer.class); dealer+=aDealer.code()+ndealer+=aDealer.name()+unn;)字段的注解是FruitSupplier类型else if(aField.isAnnotationPresent(FruitSupplier.class) (FruitSupplier aSupplier;aSupplier=(FruitSupplier)aField.getAnnotation(FruitSupplier.class);suppiier4-=aSuppli
13、er.name()+n n;supplier+=aSupplier.code()+ n; supplier+=aSupplier.address()+nnn;)else if(aField.isAnnotationPresent(FruitName.class)FruitName aName;aName=(FruitName)aField.getAnnotation(FruitName.class);name+二aName.value()+n”;)else if(aField.isAnnotationPresent(FruitColor.class)(FruitColor aColor;aCo
14、lor=(FruitColor)aField.getAnnotation(FruitColor.c!ass);color+=aColor.value()+Hnn;)return dealer+supplier+name+color;)3 .利用反射机制,显示出String类和Integer类中都有哪些域和方法。答:import j ava. lang .reflect. *;public class exercise 10_03(public static void main(String args) throws Exception(获得一个表示String类的Class对象Class ob
15、j = Class.forName(ujava.lang.Stringn);获取String类中的构造方法Constructor constructor = obj.getConstructors();System.out.println(nString 类中的构造方法:);for (Constructor con : constructor)将构造方法输出System.out.println(con.toString();System.out.println();获取String类中的所有域Field field = obj.getDeclaredFields();System.out.pr
16、intln(nString 类中的域:);for (Field f: field)System.out.println(f.toStringO);System.out.println();获取String类中的所有方法Method method = obj.gelDeclaredMethods();System.out.println(HString 类中的方法:”);for (Method m : method)System.out.println(m);System.out.println();获取Integer类中的构造方法obj = Class.forName(Hjava.lang.I
17、ntegerH);获取Integer类中的构造方法constructor = obj.getConstructors();System.out.println(HInteger 类中的构造方法:”);for (Constructor con : constructor)将构造方法输出System.out.println(con.toStringO);System.out.println();获取Integer类中的所有域field = obj .getDeclaredFields();System.out.println(MInteger 类中的域:);for (Field f: field)
18、System.out.println(f.toStringO);System.out.println();获取Integer类中的所有方法method = obj.getDeclaredMethods();System.out.println(HInteger 类中的方法:);for (Method m : method)System.out.println(m);System.out.println();4 .用LinkedList类实现判断一个字符串是否是“回文”。答:import java.util.LinkedList;import java.util.*;public class e
19、xercise 10_04 public static void main(String argsU)(LinkedList list = new LinkedList。;/创建一个 LinkedList 对象 list Scanner readei-new Scanner(System.in);char chead,ctail;String str=reader.next();for (int i = 0; i l)(chead=(char)list.pollFirst(); 删除表头元素 ctail=(char)list.poHLast();删除表尾元素if(chead!=ctail)Sy
20、stem.out.println(,NOn); return ;)System.out.println(nYESn);5 .利用流操作,实现对输入的12个字符串进行处理,要求对其中的“a”字母开头的、长度大 于2的字符串进行排序,然后输出。答:import java.util.*;import java.util.stream.Stream;import java.util.stream.Collectors;public class exercise 10_05(public static void main(String args)(String! 1 words二new String! 12;Scanner reader=new Scanner(System.in);for(int i=0; i12; i+)wordsi=reader. next();Stream stream=Stream.of(words);List list=stream.filter(i-i.startsWith(Man).filter(i-i.length()2).sorted().distinct().collect(CoHectors.toList();/把流中元素保存到列表中System.out.println(list);