Java面相对象练习案例其参考代码
是自己在各種輔導(dǎo)書的課堂上作業(yè)上挑選的一些Java面向?qū)ο?/font>的相關(guān)習(xí)題。自己也跟著敲了好幾遍感覺非常的不錯(cuò),正在的學(xué)習(xí)的小伙伴可以用來聯(lián)系。(拍胸脯)保證非常的實(shí)用
對(duì)于創(chuàng)建對(duì)象及其調(diào)用,一些靜態(tài)代碼塊和的認(rèn)識(shí)的學(xué)習(xí)非常有幫助,以案例的形式呈現(xiàn)出來。
習(xí)題目錄
- 1.設(shè)計(jì)學(xué)生類并測(cè)試
- 2. 設(shè)計(jì)學(xué)生類及子類并測(cè)試
- 3. 設(shè)計(jì)Shape接口
- 4.接口練習(xí)題
- 5.超市購(gòu)物程序
- 6.銀行新用戶現(xiàn)金業(yè)務(wù)辦理
- 7.USB接口程序設(shè)計(jì)
- 8.模擬KTV點(diǎn)歌系統(tǒng)
- 9.模擬新用戶注冊(cè)
- 10.模擬斗地主游戲
- 11.保存書店每日交易記錄程序設(shè)計(jì)
1.設(shè)計(jì)學(xué)生類并測(cè)試
請(qǐng)按照以下要求設(shè)計(jì)一個(gè)學(xué)生類Student,并進(jìn)行測(cè)試。要求如下: (1)Student類中包含name、grade兩個(gè)屬性。 (2)給每個(gè)屬性定義兩個(gè)方法,一個(gè)方法用于設(shè)置值,另一個(gè)方法用于獲取值。
(3)Student類中定義一個(gè)無(wú)參的構(gòu)造方法和一個(gè)接收兩個(gè)參數(shù)的構(gòu)造方法,兩個(gè)參數(shù)分別為name、grade屬性賦值。
(4)在測(cè)試類中創(chuàng)建兩個(gè)Student對(duì)象,一個(gè)使用無(wú)參的構(gòu)造方法,然后調(diào)用設(shè)置值的方法給name、grade屬性賦值,另一個(gè)使用有參的構(gòu)造方法,在構(gòu)造方法中給name、grade屬性賦值。
輸入樣例: 結(jié)尾無(wú)空行 輸出樣例: 在這里給出相應(yīng)的輸出。例如: name=Tom,grade=92.0 name=Jack,grade=86.0 結(jié)尾無(wú)空行
實(shí)現(xiàn)代碼
class Main {public static void main(String[] args) { Student s1=new Student(); s1.setName("Tom"); s1.setGrade(92.0); Student s2=new Student("Jack",86.0); System.out.println("name="+s1.getName()+",grade="+s1.getGrade()); System.out.println("name="+s2.getName()+",grade="+s2.getGrade());} } class Student{private String name;private double grade;public Student() {}public Student(String name, double grade) {this.name = name;this.grade = grade;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getGrade() {return grade;}public void setGrade(double grade) {this.grade = grade;}}2. 設(shè)計(jì)學(xué)生類及子類并測(cè)試
設(shè)計(jì)一個(gè)學(xué)生類Student和它的一個(gè)子類Undergraduate,要求如下:
(1)Student類有name和age屬性,一個(gè)包含兩個(gè)參數(shù)的構(gòu)造方法,用于給name和age屬性賦值,一個(gè)show()方法輸出Student的屬性信息。
(2)本科生類Undergraduate增加一個(gè)degree(學(xué)位)屬性。有一個(gè)包含三個(gè)參數(shù)的構(gòu)造方法,前兩個(gè)參數(shù)用于給繼承的name和age屬性賦值,第三個(gè)參數(shù)給degree賦值,一個(gè)show()方法用于輸出Undergraduate的屬性信息。
(3)在測(cè)試類中分別創(chuàng)建Student對(duì)象和Undergraduate對(duì)象,調(diào)用它們的show()。
輸出樣例:例如:
name: Tom age: 16
name: Jack age: 20 degree: bechalor (結(jié)尾無(wú)空行)
實(shí)現(xiàn)代碼
public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;}public void show(){System.out.println("name: "+getName() +" age: "+getAge());}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;} } public class Undergraduate extends Student{private String degree;public Undergraduate(String degree) {this.degree = degree;}public Undergraduate(String name, int age, String degree) {super(name, age);this.degree = degree;}public String getDegree() {return degree;}public void setDegree(String degree) {this.degree = degree;}@Overridepublic void show(){System.out.println("name: "+getName() +" age: "+getAge()+" degree: "+getDegree());} } public class Text {public static void main(String[] args) {Student s=new Student("Tom",16);Undergraduate un=new Undergraduate("Jack",20,"bechalor");s.show();un.show();} }3. 設(shè)計(jì)Shape接口
設(shè)計(jì)一個(gè)Shape接口和它的兩個(gè)實(shí)現(xiàn)類Square和Circle。要求如下:
(1)Shape接口中有一個(gè)抽象方法area(),方法接收一個(gè)double類型的參數(shù),返回一個(gè)double類型的結(jié)果。
(2)Square和Circle中實(shí)現(xiàn)了Shape接口的area()抽象方法,分別求正方形和圓形的面積并返回。
在測(cè)試類中創(chuàng)建Square和Circle對(duì)象,計(jì)算邊長(zhǎng)為2的正方形面積和半徑為3的圓形面積。 輸出樣例: square area:4.0
circle area:28.274333882308138 結(jié)尾無(wú)空行
實(shí)現(xiàn)代碼
public interface Shape { double area(double l); } public class Square implements Shape{@Overridepublic double area(double l) {double s;s=l*l;return s;} }public class Circle implements Shape{@Overridepublic double area(double l) {double s;s=Math.PI*l*l;return s;} } public class Test {public static void main(String[] args) {Shape s1= new Square();System.out.println("square area:"+s1.area(2));Shape circle=new Circle();System.out.println("circle area:"+circle.area(3));} }4.接口練習(xí)題
設(shè)計(jì)一個(gè)PCI接口,一個(gè)實(shí)現(xiàn)類聲卡(SoundCard),和一個(gè)實(shí)現(xiàn)類網(wǎng)卡(NetWorkCard),設(shè)計(jì)一個(gè)主板類(MainBoard),一個(gè)裝配工(Assembler),要求如下
1.PCI接口有兩個(gè)抽象方法start()和stop()。
2.兩個(gè)實(shí)現(xiàn)類實(shí)現(xiàn)接口
3.主板類接受PCI類型的參數(shù)。調(diào)用傳入對(duì)象的方法。
4.裝配工創(chuàng)建聲卡,網(wǎng)卡,主板對(duì)象。
代碼如下
public interface PCI {void start();void stop(); } //聲卡 public class SoundCard implements PCI{@Overridepublic void start() {System.out.println("du du du du");}@Overridepublic void stop() {System.out.println("Sound Stop");} } //網(wǎng)卡 public class NetWorkCard implements PCI{@Overridepublic void start() {System.out.println("Send");}@Overridepublic void stop() {System.out.println("NetWork Stop");} } //主板 public class MainBoard {public void usePCICard(PCI pci){pci.start();pci.stop();}} //裝配工 public class Assembler {public static void main(String[] args){MainBoard mb=new MainBoard();NetWorkCard nw=new NetWorkCard();SoundCard sc=new SoundCard();mb.usePCICard(nw);mb.usePCICard(sc);} }5.超市購(gòu)物程序
編寫一個(gè)超市購(gòu)物程序,實(shí)現(xiàn)超市購(gòu)物功能。購(gòu)物時(shí),如果購(gòu)物者所要購(gòu)買的商品在超市中有,則提示購(gòu)物者買到了某商品;如果超市中沒有購(gòu)物者所需的商品,則提示購(gòu)物者白跑了一趟,在超市中什么都沒有買到要求如下
1.定義商品類Product,封裝姓名屬性proName。
2.定義超市類,聲明超市名稱marketName和存放商品的倉(cāng)庫(kù)proArr,定義一個(gè)賣出指定商品的方法sell(),該方法遍歷倉(cāng)庫(kù),如果有該商品,返回商品名,否則返回null。
3.定義購(gòu)物者類Person,聲明姓名name屬性,編寫購(gòu)物shopping()方法。
4.定義測(cè)試類Shopping,創(chuàng)建商品和超市對(duì)象,存入貨物。創(chuàng)建購(gòu)物者,進(jìn)行購(gòu)物。
6.銀行新用戶現(xiàn)金業(yè)務(wù)辦理
編寫一個(gè)銀行新用戶現(xiàn)金業(yè)務(wù)辦理程序,使其模擬新用戶到銀行辦理現(xiàn)金存取業(yè)務(wù)時(shí)的場(chǎng)景。要求此場(chǎng)景中,要模擬出銀行對(duì)用戶到來的歡迎動(dòng)作、對(duì)用戶離開的提醒動(dòng)作,以及用戶的開戶、存款和取款動(dòng)作,在完成開戶、存款和取款操作后,要提示用戶的賬戶余額。具體要求如下
1.定義一個(gè)銀行類Bank,①定義銀行的名稱bankName、用戶的名稱 name、密碼password、賬戶余額balance和交易金額tuenover。②定義歡迎方法welcome()和歡迎下次再來welcomeNext()方法。③用構(gòu)造方法進(jìn)行開戶操作,開戶時(shí)需扣除10元卡費(fèi)④定義存款deposit()和取款withdrawal()方法,取款時(shí)要驗(yàn)證密碼和取款金額是否大于賬戶余額。
2.編寫交易類Trade,在此類中模擬新用戶去銀行辦理現(xiàn)金業(yè)務(wù)的場(chǎng)景。
7.USB接口程序設(shè)計(jì)
此任務(wù)中涉及到的對(duì)象有USB接口、鼠標(biāo)、鍵盤、麥克風(fēng)以及計(jì)算機(jī)。要實(shí)現(xiàn)此程序,就需要對(duì)這些對(duì)象進(jìn)行相應(yīng)的編寫。要求如下
1.設(shè)計(jì)一個(gè)USB接口,定義啟動(dòng)turnOn()和停止turnOff()的方法。 2.寫接口的實(shí)現(xiàn)類鼠標(biāo)Mouse、鍵盤KeyBoard和麥克風(fēng)Mic,在實(shí)現(xiàn)類中要實(shí)現(xiàn)這些設(shè)備的啟動(dòng)和關(guān)閉方法。 3.由于這些設(shè)備是在計(jì)算機(jī)中使用的,所以接下來編寫一個(gè)計(jì)算機(jī)類。類中編寫一個(gè)USB插槽usbArr和安裝USB設(shè)備add()的方法。同時(shí)定義開機(jī)powerOn()和關(guān)機(jī)powerOff()的方法。
4.編寫測(cè)試類,實(shí)例化計(jì)算機(jī)對(duì)象,并向計(jì)算機(jī)對(duì)象中添加三個(gè)USB設(shè)備,運(yùn)行查看結(jié)果。
8.模擬KTV點(diǎn)歌系統(tǒng)
分別使用Linkeduist和AravList集合,實(shí)現(xiàn)編寫一個(gè)模擬KTV點(diǎn)歌系統(tǒng)的程序。在程序中,指令0代表添加歌曲,指令1代表將所選歌曲置頂,指令2代表將所選歌曲提前一位,指令3名退出該系統(tǒng)。要求根據(jù)用戶輸入的指令和歌曲名展現(xiàn)歌曲列表。
public class Text {public static void main(String[] args) {System.out.println("歡迎來到點(diǎn)歌系統(tǒng)");System.out.println("0:添加歌曲");System.out.println("1:將所選歌曲置頂");System.out.println("2:將所選歌曲提前一位");System.out.println("3:退出該系統(tǒng)");LinkedList linkedList=new LinkedList();addMusicList(linkedList);while (true){System.out.println("輸入你想執(zhí)行的序號(hào)");int command=new Scanner(System.in).nextInt();switch(command){case 0:addMusic(linkedList);break;case 1:setTop(linkedList);break;case 2:setbefore(linkedList);break;case 3:exit();break;}}}private static void addMusicList(LinkedList linkedList){linkedList.add("夜的第七章");linkedList.add("稻香");linkedList.add("霍元甲");linkedList.add("青花瓷");linkedList.add("菊花臺(tái)");System.out.println("原始歌曲列表為"+linkedList);}private static void addMusic(LinkedList linkedList){System.out.println("請(qǐng)您輸入要添加的曲目");String song=new Scanner(System.in).next();linkedList.add(song);System.out.println(song+"添加完成");}private static void setTop(LinkedList linkedList){System.out.println("請(qǐng)您輸入要置頂?shù)那?#34;);String song=new Scanner(System.in).next();int index= linkedList.indexOf(song);if(index<0){System.out.println("該曲目不存在");}else{linkedList.remove(index);linkedList.addFirst(song);}}private static void setbefore(LinkedList linkedList){System.out.println("請(qǐng)您輸入要前置的曲目");String song=new Scanner(System.in).next();int index= linkedList.indexOf(song);if(index<0){System.out.println("該曲目不存在");} else if(index==0){System.out.println("該歌曲已經(jīng)在第一個(gè)");}else{linkedList.remove(index);linkedList.add(index-1,song);}}private static void exit(){System.out.println("即將退出系統(tǒng)");System.exit(0);} } public class KTVByArrayList {public static void main(String[] args) {System.out.println("歡迎來到點(diǎn)歌系統(tǒng)");System.out.println("0:添加歌曲");System.out.println("1:將所選歌曲置頂");System.out.println("2:將所選歌曲提前一位");System.out.println("3:退出該系統(tǒng)");ArrayList arrayList=new ArrayList();addMusicList(arrayList);while(true){System.out.println("輸入你想執(zhí)行的序號(hào)");int command=new Scanner(System.in).nextInt();switch(command){case 0:addMusic(arrayList);break;case 1:setTop(arrayList);break;case 2:setbefore(arrayList);break;case 3:exit();break;}}}private static void addMusicList(ArrayList arrayList){arrayList.add("夜的第七章");arrayList.add("稻香");arrayList.add("霍元甲");arrayList.add("青花瓷");arrayList.add("菊花臺(tái)");System.out.println("原始歌曲列表為"+arrayList);}private static void addMusic(ArrayList arrayList){System.out.println("請(qǐng)您輸入要添加的曲目");String song=new Scanner(System.in).next();arrayList.add(song);System.out.println(song+"添加完成");}private static void setTop(ArrayList arrayList){System.out.println("請(qǐng)您輸入要置頂?shù)那?#34;);String song=new Scanner(System.in).next();int index= arrayList.indexOf(song);if(index<0){System.out.println("該曲目不存在");}else{arrayList.remove(index);arrayList.add(0,song);}}private static void setbefore(ArrayList arrayList){System.out.println("請(qǐng)您輸入要前置的曲目");String song=new Scanner(System.in).next();int index= arrayList.indexOf(song);if(index<0){System.out.println("該曲目不存在");} else if(index==0){System.out.println("該歌曲已經(jīng)在第一個(gè)");}else{arrayList.remove(index);arrayList.add(index-1,song);}}private static void exit(){System.out.println("即將退出系統(tǒng)");System.exit(0);}}9.模擬新用戶注冊(cè)
編寫一個(gè)模擬新浪微博用戶注冊(cè)的程序,要求使用HashSet
集合實(shí)現(xiàn)。假設(shè)當(dāng)用戶輸入用戶名、密碼、確認(rèn)密碼、生日(輸入格式為yyy-mm-dd為正確)手機(jī)號(hào)碼(手機(jī)號(hào)長(zhǎng)度為11位,并且以13、15、17或18為開頭的手機(jī)號(hào)位為正確人郵箱(包含符號(hào)“@”為正確)信息之后,判斷信息輸入是否正確,正確驗(yàn)證用戶是否重復(fù)注冊(cè),如果不是重復(fù)注冊(cè)則注冊(cè)成功。要求如下
1.創(chuàng)建一個(gè)用戶類包含用戶名userName,密碼passwor,手機(jī)號(hào)telNumber,郵箱email,生日birthday,在類中重寫其中的HashCodel()equls0方法。
2.創(chuàng)建一個(gè)用戶注冊(cè)類來模擬注冊(cè)信息,該類中可以用HashSet集合來創(chuàng)建一個(gè)數(shù)據(jù)列表, 然后向列表中添加兩條初始用戶信息。
3.創(chuàng)建一個(gè)校驗(yàn)信息類,在類中實(shí)現(xiàn)校驗(yàn)用戶輸入信息的方法。
注:校驗(yàn)信息類中的正則表達(dá)式為本人所寫,非原題標(biāo)準(zhǔn)答案,如有錯(cuò)誤,望指正。
10.模擬斗地主游戲
編寫一個(gè)斗地主洗牌發(fā)牌的程序,要求按照斗地主的規(guī)則完成洗牌發(fā)牌的過程。總共有54張牌,牌面由花色和數(shù)字(包括J、Q、K、
A字母)組成,花色有?、?、?和?這4種,小🃏表示小王,大🃏表示大王。將這54張牌打亂順序,共有3位玩家參與游戲,每人輪流一次摸一-張牌,剩余3張留為底牌。程序結(jié)束,打印每人手中的紙牌和底牌。
11.保存書店每日交易記錄程序設(shè)計(jì)
編寫一個(gè)保存書店每日交易記錄的程序,使用字節(jié)流將書店的交易信息記錄在本地的CSV文件中。當(dāng)用戶輸入圖書編號(hào)時(shí),后臺(tái)會(huì)根據(jù)圖書編號(hào)查詢到相應(yīng)圖書信息,并返回打印出來。用戶緊接著輸入購(gòu)買數(shù)量,系統(tǒng)會(huì)判斷庫(kù)存是否充足,如果充足則將信息保存至本地的CSV文件中,其中,每條信息包含了“圖書編號(hào)”“圖書名稱”“購(gòu)買數(shù)量”“單價(jià)”“總價(jià)”“出版社”等數(shù)據(jù),每個(gè)數(shù)據(jù)之間用英文逗號(hào)或空格分割,每條數(shù)據(jù)之間由換行符分割。保存的時(shí)候需要判斷本地是否存在當(dāng)天的數(shù)據(jù),如果存在則追加,不存在則新建。(本題有一定的難度,慎重書寫)
public class Books {int id;String name;double price;int number;double money;String Publish;public Books(int id,String name, double peice, int number, double money, String publish) {this.id=id;this.name = name;this.price = peice;this.number = number;this.money = money;Publish = publish;}@Overridepublic String toString() {return "Books{" +"圖書編號(hào):" + id + '\'' +",圖書名稱:" + name + '\'' +",圖書價(jià)格 :" + price +", 圖書數(shù)量:" + number +", 單價(jià)" + money +", 庫(kù)存數(shù)量" + Publish + '\'' +'}';}public void setNumber(int number) {this.number = number;} } public class RecordBooksOrder {static ArrayList<Books> bookslist=new ArrayList<>();public static void main(String[] args) {init();for (Books books : bookslist) {System.out.println(books);}Scanner sc=new Scanner(System.in);while(true){System.out.println("請(qǐng)輸入圖書編號(hào)");int bookId=sc.nextInt();Books stockBooks=getbooksById(bookId);if(stockBooks!=null){System.out.println("當(dāng)前圖書信息"+stockBooks);System.out.println("請(qǐng)輸入購(gòu)買數(shù)量");int bookNumber=sc.nextInt();if(bookNumber<=stockBooks.number){Books books=new Books(stockBooks.id,stockBooks.name,stockBooks.price, (stockBooks.number-bookNumber),stockBooks.money,stockBooks.Publish);FileUtil.saveBooks(books);}else{System.out.println("庫(kù)存不足");}}else{System.out.println("圖書編號(hào)輸入錯(cuò)誤");}}}public static void init(){Books goods1=new Books(101,"Java基礎(chǔ)入門",44.50,100,4450.00,"清華大學(xué)出版社");Books goods2=new Books(102 ,"Java編程思想",108.00,50,5400.00,"機(jī)械工業(yè)出版社");Books goods3=new Books(102,"瘋狂Java講義",99.00,100,9900.00,"電子工業(yè)出版社");bookslist.add(goods1);bookslist.add(goods2);bookslist.add(goods3);}public static Books getbooksById(int bookId){for (int i = 0; i < bookslist.size(); i++) {Books thisBooks=bookslist.get(i);if(bookId==thisBooks.id)return thisBooks;}return null;} } public class FileUtil {public static final String SEPARATE_FIELD=",";public static final String SEPARATE_LINE="\r\n";public static void saveBooks(Books books){Date date=new Date();DateFormat format =new SimpleDateFormat("yyyyMMdd");String name="銷售記錄"+format.format(date)+".csv";InputStream in=null;try {in=new FileInputStream(name);if(in!=null){in.close();createFile(name,true,books);}} catch (FileNotFoundException e) {createFile(name,false,books);}catch (IOException e) {e.printStackTrace();}}private static void createFile(String name, boolean label, Books books) {BufferedOutputStream out=null;StringBuffer sbf=new StringBuffer();try {if(label) {out = new BufferedOutputStream(new FileOutputStream(name, true));}else{out = new BufferedOutputStream(new FileOutputStream(name));String[] fieldSort=new String[]{"圖書編號(hào)","圖書名稱","購(gòu)買數(shù)量","單價(jià)","總價(jià)","出版社"};for(String filedKey:fieldSort){sbf.append(filedKey).append(SEPARATE_FIELD);}}sbf.append(SEPARATE_FIELD);sbf.append(books.id).append(SEPARATE_FIELD);sbf.append(books.name).append(SEPARATE_FIELD);sbf.append(books.number).append(SEPARATE_FIELD);sbf.append((double)books.price).append(SEPARATE_FIELD);sbf.append((double)books.money).append(SEPARATE_FIELD);sbf.append(books.Publish).append(SEPARATE_FIELD);String str=sbf.toString();byte[] b=str.getBytes();for (int i = 0; i < b.length; i++) {out.write(b[i]);}} catch (Exception e) {e.printStackTrace();}finally {try {out.close();} catch (IOException e) {e.printStackTrace();}}}}總結(jié)
以上是生活随笔為你收集整理的Java面相对象练习案例其参考代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Debian安装网易云音乐记录
- 下一篇: 华为p30应用软件开启速度测试,华为P3