




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验三 内部类、常用类及异常类的用法1实验目的(1)掌握Java中内部类的用法、异常类的用法 (2)掌握Java中String类常用方法、StringBuilder类的用法;(3)掌握System类、Date类、Calender类、DateFormat类、NumberFormat类、Random类与BigInteger及BigDecimal类的用法; (4)掌握Java中正则表达式的基本用法;2实验内容实验题1 修改实验二实验题4,声明一个局部变量String text = ;然后通过循环把数组中的成员(有序)添加到text中,修改方法JOptionPane.showMessageDialog();参数以显示text。package .nwsuaf.jp.p4.data;public abstract class Product implements Comparableprotected String name;protected float price;protected static int count;public Product(String name, float price) super(); = name;this.price = price;count+;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 static int getCount() return count;public static void setCount(int count) Product.count = count;public int compareTo(Product p)return new Float(p.getPrice().compareTo(price);package .nwsuaf.jp.p4.data;import .nwsuaf.jp.p4.data.Product;public class Mobile extends Productpublic Mobile(String name,float price)super(name,price);Overridepublic String toString() return name+price+RMB;package .nwsuaf.jp.p4.data; import .nwsuaf.jp.p4.data.Product; public class Mp3Player extends Product public int memory; public Mp3Player(String name,int memory,float price) super(name,price); this.memory=memory; public int getMemory() return memory; public void setMemory(int memory) this.memory = memory; Override public String toString() return name+(+memory+MB),+price+RMB; package .nwsuaf.jp.p4;import java.util.Arrays;import javax.swing.JOptionPane;.nwsuaf.jp.p4.data.Mp3Player;import .nwsuaf.jp.p4.data.Mobile;import .nwsuaf.jp.p4.data.Product;public class Store public static void main(String args) Mobile m1=new Mobile(E365 on China Mobile, 1780.0f);Mobile m2=new Mobile(M330 on China Mobile, 1450.0f); Mp3Player p1=new Mp3Player(Meizo X3, 256, 399.0f); Mp3Player p2=new Mp3Player(Meizo E5, 512, 580.0f); Mp3Player p3=new Mp3Player(Xlive XM Mp3Player, 256, 930.0f); Product ps=m1,m2,p1,p2,p3; Arrays.sort(ps); String text=; for(int a=0;aps.length;a+) text+=psa.toString()+n; JOptionPane.showMessageDialog(null,The products are:+nn+text+nn+There are+Product.getCount()+products.); 实验题2 用StringBuiler text = ;替换String text = ;然后通过循环使用StringBuiler类的append方法向text中把数组中的成员(按价格有序)添加到text中,修改方法JOptionPane.showMessageDialog()的参数以显示text。运行结果如图3-1所示。图3-1思考问题:对比分析StringBuiler与String的区别。解:一个String对象的长度是固定的,不能改变它的内容,或者是附加新的字符至String对象中。您也许会使用+来串联字符串以达到附加新字符或字符串的目的,但+会产生一个新的String实例。而使用StringBuiler类中的append方法则是将新的字符串添加到已经开辟的内存中,不会增加新的内存来存放新增的字符串。使用StringBuiler类中的append方法效率比较高,并且使用StringBuiler类中的append方法可以完全替代String类。Storel类package .nwsuaf.jp.p4;import java.util.Arrays;import javax.swing.JOptionPane;import .nwsuaf.jp.p4.data.Mp3Player;import .nwsuaf.jp.p4.data.Mobile;import .nwsuaf.jp.p4.data.Product;public class Store public static void main(String args) Mobile m1=new Mobile(E365 on China Mobile, 1780.0f);Mobile m2=new Mobile(M330 on China Mobile, 1450.0f); Mp3Player p1=new Mp3Player(Meizo X3, 256, 399.0f); Mp3Player p2=new Mp3Player(Meizo E5, 512, 580.0f); Mp3Player p3=new Mp3Player(Xlive XM Mp3Player, 256, 930.0f); Product ps=m1,m2,p1,p2,p3; Arrays.sort(ps); /String text=; StringBuilder text=new StringBuilder(); for(int a=0;aps.length;a+) text.append(psa+n); JOptionPane.showMessageDialog(null,The products are:+nn+text+nn+There are+Product.getCount()+products.); 实验题3 从网上加载一个门户网站首页文件,用所学正则表达式知识,提取出其中所有邮箱地址。提示:读取文件的语句为BufferedReader br = new BufferedReader(new FileReader(d:sharedxxx.html);while(line= br.readLine()!=null)parse(line);基本要求:编写parse方法,完成上述功能。package text3.d3;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Email public Email()private static void parse(String text)String regex=w.-+w.-+.w+;Pattern p=Ppile(regex);Matcher m=p.matcher(text);while (m.find()String string =m.group();System.out.println(string);public static void main(String args)tryBufferedReader reader=new BufferedReader(new FileReader(f:sina.htm);String text=;while(text=reader.readLine()!=null)parse(text); catch(IOException e) e.printStackTrace(); 实验题4 修改实验二实验题4,在Product类中添加销售日期属性及销售额属性,在sell方法中对其初始化,比较Date类与Calender类的用法,最后使用SimpleDateFormat类对销售日期进行格式化;用类DecimalFormat的相关方法格式化属性sales,熟悉DecimalFormat的用法。运行结果如图3-2所示。package .nwsuaf.jp.p4.data;public abstract class Product implements Comparable protected String name;protected float price;protected static int count; protected Product (String name,float price) =name;this.price=price;+count;public String getName() return name;public float getPrice() return price;public static int getCount() return count;public int compareTo(Product product) return new Float(product.getPrice().compareTo(price);package .nwsuaf.jp.p4.data;public class Mobile extends Product public Mobile (String name,float price) super(name,price);public String toString() return name+price+RMB;package .nwsuaf.jp.p4.data;public class Mp3Player extends Product public int memory;public Mp3Player(String name,int memory,float price) super(name,price);this.memory=memory;public int getMemory() return memory;public void setMemory(int memory) this.memory = memory;Overridepublic String toString() return name+(+memory+MB),+price+RMB;package .nwsuaf.jp.p4;import java.util.Arrays;import javax.swing.JOptionPane;import .nwsuaf.jp.p4.data.Mp3Player;import .nwsuaf.jp.p4.data.Mobile;import .nwsuaf.jp.p4.data.Product;public class Store public static void main (String args) Mobile m1=new Mobile(E365 on China Mobile,1780.0f);Mobile m2=new Mobile(M330 on China Mobile,1450.0f);Mp3Player player1= new Mp3Player(Meizo X3,256,399.0f);Mp3Player player2= new Mp3Player(Meizo E5,512,580.0f);Mp3Player player3= new Mp3Player(Xlive XM MP3Player,256,930.0f);Product products =m1,m2,player1,player2,player3;Arrays.sort(products);String text=;for (int a=0;aproducts.length;+a) text+= productsa.toString()+n;JOptionPane.showMessageDialog(null, The products are:+nn+text+nn+There are +Product.getCount()+ products.);图3-2实验题 5 编写一个程序,输入一个班某门课程成绩,统计及格人数、不及格人数平均分。为此设计一个异常类,当输入的成绩小于0分或大于100分时,抛出异常,程序将捕捉这个异常,并作出相应处理。基本要求: 编写完整程序实验过程:先设计Input类,其中包含judge函数用来判断输入的成绩是否合法并分别输出不合法原因。在主方法中实现抛出异常。其次设计两个异常类分别是:subException和beyondException实现成绩大于100分和小于0分的异常。最后在主函数中编写成绩输入方法。package text3.d5;public class subException extends ArithmeticExceptionprivate static final long serialVersionUID =1L;public subException () super();public subException(String string) super(string);package text3.d5;public class beyondException extends ArithmeticException private static final long serialVersionUID =1L;public beyondException ()super();public beyondException (String string) super(string);package text3.d5;import java.util.Scanner;public class Input public static void judge (double i) throws subException,beyondException if(i100) throw new beyondException (成绩不能大于100!);public static void main (String args) int i=1;int passnum=0;int nopassnum=0;System.out.println(请输入学生成绩,以“-1”结束!);System.out.println(第+i+位同学的成绩为:);SuppressWarnings(resource)Scanner reader = new Scanner(System.in);double sum=0;double x= reader.nextDouble();while (x!=-1) tryjudge(x);if(x60) passnum= passnum+1;sum+=x; catch(subException e1) System.out.println(e1);i-=1;catch(beyondException e2) System.out.println(e2);i-=1;i=i+1;System.out.println(第+i+位学生的成绩为:);x=reader.nextDouble();System.out.println(平均分为:+sum/(nopassnum+passnum);System.out.println(及格人数为:+passnum);System.out.println(不及格人数为:+nopassnum);*实验题6 设计类ReflectTester,该类中有一方法copy(Object obj),该方法能够创建一个和参数obj同样类型的对象,然后把obj对象中所有属性复制到新建对象中,并将它返回。基本要求:设计相关类完成上述功能(只要求复制简单JavaBean,且每个JavaBean的每个属性都有public类型的getXxx()和setXxx()方法)。package text.d6;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) / TODO 自动生成的构造函数存根super();=name;this.price=price;public Product() / TODO 自动生成的构造函数存根super();package text3.d6;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import text.d6.Product;public class reflectTester public reflectTester() / TODO 自动生成的构造函数存根SuppressWarnings( rawtypes, unchecked )public Object copy(Object obj) throws InstantiationException,IllegalAccessException,IllegalArgumentException,InvocationTargetException,NoSuchMethodException,SecurityException Class classType=obj.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,field.getType();Object value = getMethod.invoke(obj,new Object);System.out.println(fieldName+,+value);setMethod.invoke(objectOfCopy, new Objectvalue);re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年创新教育平台股权收购与教育资源共享框架协议
- 2025年度高端百货商品定制化供应链管理与市场拓展合同
- 2025年企业集团车辆租赁运营管理合作协议
- 2025年度企业人才储备与职业发展辅导定制化就业服务合同
- 2025年职工自愿参保失业保险补偿协议范本
- 2025年度医疗器械进出口监测及风险评估报告合同
- 2025年新型EPS线条生产节能技术合作协议
- 2025年绿色环保产业园厂房租赁及可持续发展运营管理协议
- 2025年大型项目车辆租赁与区域配送合作协议
- 2025年度专科医院急诊科医疗资源合作管理协议
- 附件2:慢病管理中心评审实施细则2024年修订版
- 食品安全制度管理目录
- 【建筑专业】16J914-1公用建筑卫生间(完整)
- DL∕T 5776-2018 水平定向钻敷设电力管线技术规定
- 邮政市场业务员(中级)理论考试复习题库(附答案)
- DZ∕T 0070-2016 时间域激发极化法技术规程(正式版)
- 消化内镜进修总结汇报
- 兽医检验题库与答案
- 换电柜地租赁合同范本
- 影响安全生产的六种员工心理状态
- 儿童视角下幼儿园班级主题墙创设的策略研究
评论
0/150
提交评论