JAVA實驗3.docx_第1頁
JAVA實驗3.docx_第2頁
JAVA實驗3.docx_第3頁
JAVA實驗3.docx_第4頁
JAVA實驗3.docx_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實驗三 內部類、常用類及異常類的用法1實驗目的(1)掌握Java中內部類的用法、異常類的用法 (2)掌握Java中String類常用方法、StringBuilder類的用法;(3)掌握System類、Date類、Calender類、DateFormat類、NumberFormat類、Random類與BigInteger及BigDecimal類的用法; (4)掌握Java中正則表達式的基本用法;2實驗內容實驗題1 修改實驗二實驗題4,聲明一個局部變量String text = ;然后通過循環(huán)把數(shù)組中的成員(有序)添加到text中,修改方法JOptionPane.showMessageDialog();參數(shù)以顯示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 = ;然后通過循環(huán)使用StringBuiler類的append方法向text中把數(shù)組中的成員(按價格有序)添加到text中,修改方法JOptionPane.showMessageDialog()的參數(shù)以顯示text。運行結果如圖3-1所示。圖3-1思考問題:對比分析StringBuiler與String的區(qū)別。解:一個String對象的長度是固定的,不能改變它的內容,或者是附加新的字符至String對象中。您也許會使用+來串聯(lián)字符串以達到附加新字符或字符串的目的,但+會產生一個新的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 編寫一個程序,輸入一個班某門課程成績,統(tǒng)計及格人數(shù)、不及格人數(shù)平均分。為此設計一個異常類,當輸入的成績小于0分或大于100分時,拋出異常,程序將捕捉這個異常,并作出相應處理?;疽螅?編寫完整程序實驗過程:先設計Input類,其中包含judge函數(shù)用來判斷輸入的成績是否合法并分別輸出不合法原因。在主方法中實現(xiàn)拋出異常。其次設計兩個異常類分別是:subException和beyondException實現(xiàn)成績大于100分和小于0分的異常。最后在主函數(shù)中編寫成績輸入方法。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+位同學的成績?yōu)?);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+位學生的成績?yōu)椋?;x=reader.nextDouble();System.out.println(平均分為:+sum/(nopassnum+passnum);System.out.println(及格人數(shù)為:+passnum);System.out.println(不及格人數(shù)為:+nopassnum);*實驗題6 設計類ReflectTester,該類中有一方法copy(Object obj),該方法能夠創(chuàng)建一個和參數(shù)obj同樣類型的對象,然后把obj對象中所有屬性復制到新建對象中,并將它返回?;疽螅涸O計相關類完成上述功能(只要求復制簡單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 自動生成的構造函數(shù)存根super();=name;this.price=price;public Product() / TODO 自動生成的構造函數(shù)存根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 自動生成的構造函數(shù)存根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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論