




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三 内部类、常用类及异常类的用法1实验目的(1)掌握Java中内部类的用法、异常类的用法(2)掌握Java中String类常用方法、StringBuilder类的用法;(3)掌握System类、Date类、Calender类、DateFormat类、NumberFormat类、Random类与BigInteger及BigDecimal类的用法;(4)掌握Java中正则表达式的基本用法;2实验内容实验题1 修改实验二实验题5,声明一个局部变量String text = ;然后通过循环把数组中的成员(有序)添加到text中,修改方法JOptionPane.showMessageDialog();参数以显示text。实验题2 用StringBuiler text = ;替换String text = ;然后通过循环使用StringBuiler类的append方法向text中添加把数组中的成员(有序)添加到text中,修改方法JOptionPane.showMessageDialog();参数以显示text。思考问题:对比分析StringBuiler与String的区别。(1)不可改变对象在.NET中String是不可改变对象,一旦创建了一个String对象并为它赋值,它就不可能再改变。(2)引用类型前面说过String是引用类型,这就是如果我们创建很多个相同值的字符串对象,它在内存中的指向地址应该是一样的。也就是说,当我们创建了字符串对象a,它的值是“1234”,当我们再创建一个值为“1234”的字符串对象b时它不会再去分配一块内存空间,而是直接指向了a在内存中的地址。(3)StringBuilder对象通过上面的分析可以看出,String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间。这样就引出StringBuilder对象,StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能。实验结果: Main函数:package .nwsuaf.jp.p4;import java.util.Arrays;import javax.swing.JOptionPane;import .nwsuaf.jp.p4.data.Mobile;import .nwsuaf.jp.p4.data.Mp3Player;import .nwsuaf.jp.p4.data.Product;public class Store public static int count = 0;public static void main(String args) Mp3Player p1 = new Mp3Player(Meizo X3 (256MB),399.0f);Mp3Player p2 = new Mp3Player(Meizo E5 (512MB),580.0f);Mp3Player p3 = new Mp3Player(Xlive XM Mp3Play(256MB),930.0f);Mobile m1 = new Mobile(E365 on China Mobile,1780.0f);Mobile m2 = new Mobile(E3330 on China Mobile,1450.0f);Product products = p1,p2,p3,m1,m2;Arrays.sort(products);StringBuilder text = new StringBuilder() ; for(int index = 0; index products.length; +index)text.append (productsindex+n); count+;JOptionPane.showMessageDialog(null,The products are:nn+text+nThere are + count + products.);实验题3 从网上加载一个门户网站首页文件,用所学正则表达式知识,提取出其中所有邮箱地址。提示:读取文件的语句为BufferedReader br = new BufferedReader(new FileReader(d:sharedxxx.html);while(line= br.readLine()!=null)parse(line);基本要求:编写parse方法,完成上述功能。运行结果:代码如下:package .regex;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Regex /* * param args */private static void parse(String line) String regex = w.-+w.-+.w+;Pattern p = Ppile(regex);Matcher m = p.matcher(line);while(m.find()String str = m.group();System.out.println(str);public static void main(String args) / TODO Auto-generated method stubtry BufferedReader reader = new BufferedReader(new FileReader(d:xxx.txt);String line = ;while(line = reader.readLine()!=null)parse(line); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();实验题4 修改实验二实验题5,在Item类中添加销售日期属性,在sell方法中对其初始化,比较Date类与Calender类的异同,最后使用DateFormat类对销售日期进行格式化;用类DecimalFormat的相关方法格式化属性sales,熟悉DecimalFormat的用法。实验结果:实验题 5 编写一个程序,输入一个班某门课程成绩,统计及格人数、不及格人数平均分。为此设计一个异常类,当输入的成绩小于0分或大于100分时,抛出异常,程序将捕捉这个异常,并作出相应处理。基本要求: 编写完整程序设计思路:首先建立俩个异常类OverException和MinException,他们都继承ArithmeticException。设计一个score函数用来输入学生成绩,如果成绩大于100,则抛出超出异常,如果成绩小于0,则抛出小于异常。如果大于60,则pass加1,把成绩x加到num。如果小于60,则notpass加1,把成绩x加到num,最后以-1结束输入。平均成绩就等于num/(pass+notpass)。实验结果:代码如下:package .student;public class OverException extends ArithmeticException /* * */private static final long serialVersionUID = 1L;public OverException() public OverException(String str) super(str); package .student;public class MinusException extends ArithmeticException /* * */private static final long serialVersionUID = 1L;public MinusException() public MinusException(String str) super(str); package .student;import java.util.Scanner;public class Student public static void score(double i) throws MinusException,OverException if (i 100)throw new OverException(成绩大于100了!);public static void main(String args) int a = 1;int Pass = 0;int notPass = 0;System.out.println(请输入学生成绩,最后以-1结束);System.out.print(第 + a + 位学生的成绩:);Scanner reader = new Scanner(System.in);double sum = 0;double x = reader.nextDouble();while (x != -1) try score(x);if (x = 60) Pass += 1;sum += x; catch (MinusException e1) System.out.println(e1);a-=1; catch (OverException e2) System.out.println(e2);a-=1;a = a + 1;System.out.print(第 + a + 位学生的成绩:);x = reader.nextDouble();System.out.println(平均分为: + sum / (notPass + Pass);System.out.println(及格人数为: + Pass);System.out.println(不及格人数为: + notPass);实验题6 设计类ReflectTester,该类中有一方法copy(Object obj),该方法能够创建一个和参数obj同样类型的对象,然后把obj对象中所有属性复制到新建对象中,并将它返回。设计思路:首先定义一个类Product,有属性name和price,以及构造函数和getName()和getPrice()函数。再定义一个reflectTester类,实现copy方法,在主函数中定义一个Product实例,并调用copy方法。实验结果:代码如下:package .reflect.objectcopy;public class Product private String name;private float price;public String getName() return name;public void setName(String name) = name;public float getPrice() return price;public void setPrice(float price) this.price = price;public Product(String name, float price) super(); = name;this.price = price;public Product() super();package .reflectTester;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import .reflect.objectcopy.Product;import sun.reflect.generics.tree.ClassTypeSignature;SuppressWarnings(unused)public class reflectTester SuppressWarnings( rawtypes, unchecked )public Object copy(Object object) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityExceptionClass classType = object.getClass();System.out.println(Class + classType.getName();Object objectOfCopy = classType.getConstructor(new Class).newInstance(new Object);Field fields = classType.getDeclaredFields();for(Field field:fields)String fieldName = field.getName();String firstLetter = fieldName.substring(0,1).toUpperCase();String getMethodName = get + firstLetter + fieldName.substring(1);String setMethodName = set + firstLetter + fieldName.substring(1);Method getMethod = classType.getMethod(getMethodName, new Class);/Method setMethod = classType.getMethod(setMethodName, new Classfield.getType();Method setMethod = classType.getMethod(setMethodName, field.getType();Object value = getMethod.invoke(object, new Object);System.out.println(fieldName + , + value);setMethod.invoke(objectOfCopy, new Objectvalue);return objectOfCopy;public static void main(String args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityExceptionProduct product = new Product(钢铁是怎样炼成的,34.9f);Product productOfCopy = (Product) new reflectTester().copy(product);System.out.println(Copy infomation: + , + productOfCopy.getName() + , + productOfCopy.getPrice();实验题7 利用Java反射机制设计类ArrayTester
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022-2023学年上海华东师范大学二附中高一(上)期中考试语文试题
- 肥胖与癌症关联性及体重管理
- 互助养老合同(标准版)
- 2025-2026学年度导游资格考试经典例题(A卷)附答案详解
- 综合楼六类标准综合布线工程招标文件
- 职称计算机模拟题库及参考答案详解【A卷】
- 2025年绿色建筑材料市场推广与政策支持下的绿色建筑市场风险防控与应对策略研究报告
- 2025年工业互联网平台云计算资源动态分配在智能供应链管理中的应用策略研究报告
- 中小学假期安全教育班会怎么开展(34篇)
- 中小学学校管理制度(30篇)
- 2024年全国工会财务知识大赛备赛试题库500(含答案)
- 无人机专业介绍课件
- 大班语言活动《失踪的鼻子》绘本故事早期阅读PPT课件【幼儿教案】
- 英语课程标准2022版电子版
- 资产质量分析
- 检验科进修总结(2篇)
- 打印复印费明细
- GB/T 9798-2005金属覆盖层镍电沉积层
- 《编程猫系列》第1课-Hello-编程猫(课件)
- 高一上学期月考语文试题(八套)
- 非典型骨折课件
评论
0/150
提交评论