版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課 程 設(shè) 計(jì) 報(bào) 告 課程設(shè)計(jì)名稱(chēng) java程序設(shè)計(jì) 專(zhuān) 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班 級(jí) 2 班 學(xué) 號(hào) 08030212 姓 名 指導(dǎo)教師 成 績(jī) 2011年3月10日目 錄目錄根據(jù)word生成一、設(shè)計(jì)任務(wù)與要求1.1 設(shè)計(jì)任務(wù)與要求程序設(shè)計(jì)專(zhuān)題的任務(wù)與要求:課程設(shè)計(jì)的任務(wù):根據(jù)所選題目,完成課程設(shè)計(jì)的分析、設(shè)計(jì)和編碼,寫(xiě)出課程設(shè)計(jì)報(bào)告。(1)掌握java的語(yǔ)言規(guī)范,面向?qū)ο蟮暮诵母拍詈吞匦裕?2)掌握java的編程技術(shù),包括異常處理,圖形界面設(shè)計(jì),多線(xiàn)程,網(wǎng)絡(luò)通信程序等;(3)掌握java應(yīng)用軟件的開(kāi)發(fā)環(huán)境和開(kāi)發(fā)過(guò)程;(4)掌握面向?qū)ο蟮乃枷牒统绦蛟O(shè)計(jì)方法。課程設(shè)計(jì)的要求:設(shè)計(jì)一個(gè)猜數(shù)字游
2、戲程序,該游戲可以由程序隨機(jī)產(chǎn)生整數(shù),玩游戲者通過(guò)由用戶(hù)輸入數(shù)字來(lái)匹配上面所產(chǎn)生的數(shù)字。用戶(hù)隨機(jī)輸入數(shù)字,當(dāng)與計(jì)算機(jī)產(chǎn)生的隨機(jī)數(shù)相符合時(shí),計(jì)算機(jī)將提醒用戶(hù),游戲成功的信息,當(dāng)有偏差時(shí),將會(huì)提醒偏差,如偏大或者是偏小。1.2 選題目的與意義通過(guò)選擇猜數(shù)字游戲這個(gè)題目,可以讓我掌握java中的包和類(lèi),并且可以靈活的使用my eclipse軟件。同時(shí)更加深入的了解字符界面的編程過(guò)程。使我更熟練的掌握java程序框架的搭建和類(lèi)的創(chuàng)建格式。在分析階段,要進(jìn)行面向?qū)ο蟮男枨蠓治?、系統(tǒng)設(shè)計(jì)、畫(huà)出相應(yīng)的需求分析圖、系統(tǒng)設(shè)計(jì)模型圖,這些工作更能鍛煉我的邏輯思維,更能培養(yǎng)我思考的全面性。讓我學(xué)會(huì)了多角度思考問(wèn)題,
3、對(duì)我以后的編程奠定了更好的基礎(chǔ)。二、需求分析2.1 用戶(hù)需求分析設(shè)計(jì)一個(gè)猜數(shù)字游戲程序,要求具體如下特性:(1) 趣味性:要求游戲內(nèi)容豐富多彩,語(yǔ)言風(fēng)趣幽默。(2) 大眾性:要求游戲界面操作簡(jiǎn)單,游戲規(guī)則簡(jiǎn)單易懂。(3) 合理性:游戲設(shè)計(jì)嚴(yán)謹(jǐn),有條理,具體需求如下 輸入任意一個(gè)數(shù)字。數(shù)字的要求是1100的自然數(shù)即可。 系統(tǒng)對(duì)您輸入的數(shù)字進(jìn)行判斷。如果玩家輸入的數(shù)字與計(jì)算機(jī)隨機(jī)生成數(shù)相比較,輸入的數(shù)字比隨機(jī)生成數(shù)小.系統(tǒng)將提示您,數(shù)字太小請(qǐng)您重新輸入。如果玩家輸入的數(shù)字與計(jì)算機(jī)隨機(jī)生成數(shù)相比較,如果輸入的數(shù)字比隨機(jī)生成數(shù)大。系統(tǒng)將提示您,數(shù)字太大請(qǐng)您重新輸入。如果玩家輸入的字符不是合法字符,系統(tǒng)
4、將提示您,您輸入的數(shù)字不合法,請(qǐng)從新輸入。 游戲開(kāi)始時(shí),系統(tǒng)自動(dòng)記錄您猜數(shù)字的時(shí)間,結(jié)束后顯示游戲共花費(fèi)的時(shí)間。 每猜測(cè)一次,系統(tǒng)會(huì)記錄下來(lái),游戲結(jié)束后,顯示共猜測(cè)多少次。 在游戲開(kāi)始時(shí),自動(dòng)顯示游戲規(guī)則。 在游戲結(jié)束時(shí),可以選擇關(guān)閉游戲,或者再來(lái)一局。2.2 開(kāi)發(fā)環(huán)境分析硬件要求能運(yùn)行windows 9.x操作系統(tǒng)的微機(jī)系統(tǒng)。java程序設(shè)計(jì)語(yǔ)言及相應(yīng)的集成開(kāi)發(fā)環(huán)境,j2sdk和eclipse開(kāi)發(fā)工具。j2sdk簡(jiǎn)介:j2sdk是就阿java的開(kāi)發(fā)環(huán)境包。它包含jdk(開(kāi)發(fā)工具包)和jre(運(yùn)行時(shí)環(huán)境包) 。jdk包含jre ,jdk是開(kāi)發(fā)人員必裝軟件,jre是客戶(hù)端運(yùn)行時(shí)必裝軟件 ,j2s
5、dk就是jdk,j2jre就是jre。jcreator是開(kāi)發(fā)java的軟件。開(kāi)發(fā)java也可以用記事本開(kāi)發(fā)原程序eclipse簡(jiǎn)介:eclipse 是一個(gè)開(kāi)放源代碼的、基于 java 的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括 java 開(kāi)發(fā)工具(java development tools,jdt)。eclipse的設(shè)計(jì)思想是:一切皆為插件。它自身的核心是非常小的,其它所有的功能都以插件的形式附加到該核心上。eclipse中三個(gè)最吸引人的地方:一是它創(chuàng)新性的圖形api,即swt/jface,在
6、此之前,我曾經(jīng)用過(guò)java 的awt/swing來(lái)開(kāi)發(fā)windows應(yīng)用程序,awt/swing其界面客觀(guān)地講不夠美觀(guān),而且界面響應(yīng)速度比較慢;而swt/jface則大大改善了java在這方面的能力。二是它的插件機(jī)制。三是利用它的插件機(jī)制開(kāi)發(fā)的眾多功能強(qiáng)大的插三、系統(tǒng)設(shè)計(jì)3.1 系統(tǒng)總體設(shè)計(jì)猜數(shù)字游戲游戲隨機(jī)給出一個(gè)1100 (包括1和100) 之間的數(shù)字,然后讓你猜是什么數(shù)字。你可以隨便猜一個(gè)數(shù)字,游戲會(huì)提示太大還是太小,從而縮小結(jié)果范圍。經(jīng)過(guò)幾次猜測(cè)與提示后,最終推出答案。(系統(tǒng)設(shè)計(jì)如圖3.1)游戲界面游戲開(kāi)始游戲說(shuō)明產(chǎn)生隨機(jī)數(shù)輸出字符記錄次數(shù)記錄時(shí)間重新開(kāi)始關(guān)閉游戲圖3.1游戲界面:采用
7、圖形界面顯示。頁(yè)面有如下功能:開(kāi)始,結(jié)束,重來(lái),幫助。游戲開(kāi)始后,由計(jì)算機(jī)產(chǎn)生一個(gè)1-100的隨機(jī)數(shù),不顯示在圖形界面,但顯示在字符界面。用戶(hù)只需輸入所猜想的數(shù)字,打印在輸入框內(nèi),按“確定”按鈕表示確定,游戲返回提示語(yǔ)句,按照提示語(yǔ)句操作,直至游戲結(jié)束。 同時(shí),計(jì)算機(jī)開(kāi)始對(duì)游戲進(jìn)行計(jì)時(shí)和計(jì)數(shù)功能。游戲過(guò)程中,如果不想繼續(xù)玩了,可以直接退出,想重新開(kāi)局,按“重新開(kāi)始”按鈕即可。想控制界面大小只需拖拽圖形界面邊框即可。游戲結(jié)束后,可以選擇“關(guān)閉”游戲,或者是“重新開(kāi)始”。3.2 功能模塊設(shè)計(jì)(模塊功能設(shè)計(jì)如圖3.2)模塊的組成游戲說(shuō)明模塊輸入輸出模塊計(jì)時(shí)模塊產(chǎn)生隨機(jī)數(shù)判斷該數(shù)是否合法輸出猜測(cè)的數(shù)字
8、給出提示語(yǔ)言開(kāi)始前顯示規(guī)則開(kāi)始時(shí)記錄初始時(shí)間猜中后記錄結(jié)束時(shí)間猜數(shù)次數(shù)模塊初始值為零每猜測(cè)一次自加1成績(jī)判定模塊由猜測(cè)次數(shù)決定圖3.23.3 類(lèi)的設(shè)計(jì)3.3.1 類(lèi)的定義類(lèi)是把具有相同屬性的事物劃分為一類(lèi),從而得出抽象的概念。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,類(lèi)是一個(gè)獨(dú)立的程序單位,是具有相同屬性和方法的一組對(duì)象的集合,它為屬于該類(lèi)的全部對(duì)象提供了抽象描述。類(lèi)的概念使我們能對(duì)屬于該類(lèi)的全部對(duì)象進(jìn)行統(tǒng)一的描述。在定義對(duì)象之前應(yīng)先定義類(lèi)。描述一個(gè)類(lèi)需要指明下述三個(gè)方面內(nèi)容:類(lèi)標(biāo)識(shí):類(lèi)的一個(gè)有別于其他類(lèi)的名字。屬性說(shuō)明:用來(lái)描述相同對(duì)象的靜態(tài)特征。方法說(shuō)明:用來(lái)描述相同對(duì)象的動(dòng)態(tài)特征。3.3.2 定義類(lèi)的格式c
9、lass 類(lèi)名數(shù)據(jù)成員成員方法類(lèi)的結(jié)構(gòu)是由類(lèi)說(shuō)明和類(lèi)體兩部分組成的。類(lèi)的說(shuō)明部分由關(guān)鍵字 class 與類(lèi)名組成,類(lèi)名的命名遵循 java 標(biāo)識(shí)符的定義規(guī)則。類(lèi)體是類(lèi)聲明中花括號(hào)所包括的全部?jī)?nèi)容,它又是由數(shù)據(jù)成員(屬性)和成員方法(方法)兩部分組成。數(shù)據(jù)成員描述對(duì)象的屬性;成員方法則刻畫(huà)對(duì)象的行為或動(dòng)作,每一個(gè)成員方法確定一個(gè)功能或操作。3.3.3 類(lèi)的分類(lèi)從用戶(hù)的角度看,java 源程序中的類(lèi)分為兩種:系統(tǒng)定義的類(lèi):即 java 類(lèi)庫(kù),它是系統(tǒng)定義好的類(lèi)。java 語(yǔ)言由語(yǔ)法規(guī)則和類(lèi)庫(kù)兩部分組成,語(yǔ)法規(guī)則確定 java 程序的書(shū)寫(xiě)規(guī)范;類(lèi)庫(kù)則提供了 java 程序與運(yùn)行它的系統(tǒng)軟件(java
10、 虛擬機(jī))之間的接口。用戶(hù)自定義類(lèi):系統(tǒng)定義的類(lèi)雖然實(shí)現(xiàn)了許多常見(jiàn)的功能,但是用戶(hù)程序仍然需要針對(duì)特定問(wèn)題的特定邏輯來(lái)定義自己的類(lèi)。進(jìn)行 java 程序設(shè)計(jì),實(shí)際上就是定義類(lèi)的過(guò)程。一個(gè) java 源程序文件往往是由許多個(gè)類(lèi)組成的。3.3.4類(lèi)的搭建首先,搭建java程序框架。打開(kāi)eclipse,新建名為guessnumbergame的項(xiàng)目,然后新建名為guessnumber的java類(lèi)。給guessnumber加上合適的javadoc。(1)random(隨機(jī)數(shù))random(隨機(jī)數(shù))的功能就是借助java api提供的random類(lèi)來(lái)產(chǎn)生一個(gè)隨機(jī)數(shù)。定義一個(gè)整型變量number來(lái)保存隨機(jī)產(chǎn)
11、生的整數(shù),并且用直接初始化的方法把random產(chǎn)生的隨機(jī)數(shù)賦給number變量。random類(lèi)是在java.util這個(gè)包中。建立時(shí)可以手動(dòng)在源程序頂部輸入import java.util.random;語(yǔ)句來(lái)申明該程序?qū)⒁褂胘ava.util包中的random類(lèi)。也可以運(yùn)用eclipse,把光標(biāo)移動(dòng)到有紅色波浪線(xiàn)的random上,然后按下ctrlshiftm,eclipse會(huì)自動(dòng)完成導(dǎo)入的工作。此時(shí)保存一下源代碼,警告就會(huì)消失。四、程序?qū)崿F(xiàn)4.1 程序流程圖(如圖4.1)開(kāi) 始系統(tǒng)開(kāi)始計(jì)時(shí)由用戶(hù)輸入一個(gè)數(shù)yxy輸入的大了,再小一點(diǎn)吧輸入的小了,再大一點(diǎn)吧yn由計(jì)算機(jī)產(chǎn)生隨機(jī)數(shù)xx=y系統(tǒng)結(jié)
12、束計(jì)時(shí)系統(tǒng)統(tǒng)計(jì)猜數(shù)次數(shù)結(jié) 束圖4.14.2 關(guān)鍵算法與技術(shù)實(shí)現(xiàn)4.2.1源程序/*程序運(yùn)行時(shí)自動(dòng)產(chǎn)生1-100的隨機(jī)數(shù) *接受用戶(hù)鍵盤(pán)輸入數(shù)據(jù)并給出指示信息 *直至猜對(duì),游戲者猜對(duì)后,顯示猜對(duì)次數(shù) *并且供計(jì)時(shí)功能 */ import java.awt.event.actionevent;import java.awt.event.actionlistener;import java.awt.event.keyadapter;import java.awt.event.keyevent;import java.util.random;import javax.swing.jbutton;imp
13、ort javax.swing.jlabel;import javax.swing.joptionpane;import javax.swing.jtextfield;import javax.swing.windowconstants;/* author 陳雪瑩 * 有趣的猜數(shù)字游戲*/public class guessnumber extends javax.swing.jframe /set look & feel try /設(shè)置窗口外觀(guān)為windows外觀(guān) javax.swing.uimanager.setlookandfeel(com.sun.java.swing.plaf.win
14、dows.windowslookandfeel); catch(exception e) e.printstacktrace(); private jlabel jlabel1; private jtextfield jtextfield1; private jbutton jbutton1; private jbutton jbutton2; private int number=0; private int counter=0; long starttime = system.currenttimemillis(); long endtime; /* * auto-generated ma
15、in method to display this jframe */ public static void main(string args) guessnumber inst = new guessnumber(); inst.setvisible(true); /顯示窗口 /* *新建一個(gè)隨機(jī)數(shù)產(chǎn)生器,然后生成一個(gè)1到100之間的整數(shù)*/ public guessnumber() super(); initgui(); random random = new random(); number = random.nextint(100); /產(chǎn)生一個(gè)1-100間的隨機(jī)數(shù) /* *初始化窗口
16、組件 */ private void initgui() try setdefaultcloseoperation(windowconstants.dispose_on_close);/窗口關(guān)閉時(shí)銷(xiāo)毀窗口 getcontentpane().setlayout(null);/設(shè)置窗口布局為絕對(duì)布局 jlabel1 = new jlabel(); getcontentpane().add(jlabel1); jlabel1.settext(歡迎進(jìn)入有趣的猜數(shù)字游戲,游戲規(guī)則如下: + 游戲隨機(jī)產(chǎn)生1-100的整數(shù),玩家通過(guò)輸入數(shù)字來(lái)匹配所產(chǎn)生的數(shù)字。+ 用戶(hù)隨機(jī)輸入數(shù)字,當(dāng)與計(jì)算機(jī)產(chǎn)生的隨機(jī)數(shù)相符
17、合時(shí),計(jì)算機(jī)將提醒用戶(hù),游戲成功的信息+ 當(dāng)有偏差時(shí),將會(huì)提醒偏差,如偏大或者是偏小。結(jié)束后記錄游戲時(shí)間和猜測(cè)次數(shù)+ 我心里有一個(gè)1到100之間的整數(shù),你猜是什么?); jlabel1.setbounds(7, 0, 420, 147);/設(shè)置標(biāo)簽位置 jtextfield1 = new jtextfield(); getcontentpane().add(jtextfield1); jtextfield1.setbounds(42, 168, 112, 28); jtextfield1.addkeylistener(new keyadapter()/文本框添加鍵盤(pán)按鍵監(jiān)聽(tīng)-監(jiān)聽(tīng)回車(chē)鍵 pub
18、lic void keypressed(keyevent evt) jtextfield1keypressed(evt); ); jbutton1 = new jbutton(); getcontentpane().add(jbutton1); jbutton1.settext(確定); jbutton1.setbounds(182, 168, 77, 28); jbutton1.addactionlistener(new actionlistener()/按鈕添加監(jiān)聽(tīng) public void actionperformed(actionevent evt) jbutton1actionper
19、formed(evt);/按鈕被點(diǎn)擊時(shí) 執(zhí)行該方法 ); jbutton2 = new jbutton(); getcontentpane().add(jbutton2); jbutton2.settext(重新開(kāi)始); jbutton2.setbounds(280, 168, 91, 28); jbutton2.addactionlistener(new actionlistener() public void actionperformed(actionevent evt) jbutton2actionperformed(evt); ); pack(); this.setsize(442,
20、 265); / 設(shè)置窗口大小 setlocationrelativeto(null); / 設(shè)置窗口在顯示器居中顯示 catch (exception e) e.printstacktrace(); /* * “確定”按鈕事件監(jiān)聽(tīng) * param evt */ private void jbutton1actionperformed(actionevent evt) int guess=0; / 記錄玩家所猜測(cè)的數(shù)字 counter+; / 計(jì)數(shù)器增加一。/ try,catch的異常管理。 try / 獲取玩家的輸入 guess=integer.parseint(jtextfield1.ge
21、ttext(); catch (exception e) / 如果玩家不是輸入一個(gè)合法的整數(shù),則讓他重新輸入。 joptionpane.showmessagedialog(null, 數(shù)字不合法,請(qǐng)輸入一個(gè)1-100之間的整數(shù)!); /顯示一個(gè)對(duì)話(huà)框 jtextfield1.settext();/清空文本框內(nèi)容 jtextfield1.requestfocus();/文本框獲取輸入焦點(diǎn) return ; / 對(duì)玩家的輸入進(jìn)行判斷。 if (guess number) joptionpane.showmessagedialog(null, 輸入的大了,再小一點(diǎn)吧!); jtextfield1.s
22、ettext(); jtextfield1.requestfocus(); return ; if (guess number) joptionpane.showmessagedialog(null, 輸入的大了,再小一點(diǎn)吧!); jtextfield1.settext(); jtextfield1.requestfocus(); return ; if (guess number) joptionpane.showmessagedialog(null, 輸入的小了,再大一點(diǎn)吧!); jtextfield1.settext(); jtextfield1.requestfocus(); retu
23、rn ; if (guess = number) endtime=system.currenttimemillis();(3)判定成績(jī)模塊/ 判斷成績(jī)。 switch (counter) case 1: joptionpane.showmessagedialog(null,你是神么? 這也太給力了吧!); break; case 2: case 3: case 4: case 5: case 6: case 7: joptionpane.showmessagedialog(null,這么快就猜對(duì)了,你很smart??!); break; default:joptionpane.showmessa
24、gedialog(null,猜了半天才猜出來(lái),小同志,尚須努力??!); break; joptionpane.showmessagedialog(null,您總共猜了+counter+次 共花了+(endtime-starttime)/1000+秒的時(shí)間答對(duì)正確答案!); jtextfield1.settext(); jtextfield1.requestfocus(); switch語(yǔ)句是基于整型表達(dá)式的條件判斷語(yǔ)句,猜數(shù)字用它來(lái)進(jìn)行成績(jī)判斷??梢钥闯觯瑂witch語(yǔ)句是和若干case語(yǔ)句和一個(gè)default語(yǔ)句搭配使用的。代碼中的switch語(yǔ)句用counter變量的值進(jìn)行判斷。當(dāng)coun
25、ter的值為1時(shí),便執(zhí)行case 1里面的語(yǔ)句,即打印“你是神么? 這也太給力了吧!”的字樣,隨后的break語(yǔ)句表示整個(gè)switch語(yǔ)句執(zhí)行到這里結(jié)束了。當(dāng)counter的值為2時(shí),便執(zhí)行case 2里面的語(yǔ)句??梢园l(fā)現(xiàn)case 2到case 6都沒(méi)有break語(yǔ)句,這表示依次執(zhí)行下面的語(yǔ)句,從而counter的值為2至7時(shí),都打印“這么快就猜對(duì)了,你很smart?。 弊謽?。當(dāng)counter的值不是1至7時(shí),便執(zhí)行default語(yǔ)句,打印“猜了半天才猜出來(lái),小同志,尚須努力??!”的字樣。(4)計(jì)時(shí)模塊計(jì)時(shí)模塊的代碼分別寫(xiě)在游戲的開(kāi)始和游戲的結(jié)束,取得時(shí)間差,以毫秒為單位。long start
26、time = system.currenttimemillis();long endtime = system.currenttimemillis();(5)異常處理java語(yǔ)言提供了異常(exception)處理機(jī)制幫助程序員發(fā)現(xiàn)并處理異常。所謂異常,就是在程序執(zhí)行過(guò)程中能干擾程序正常流程的事件。導(dǎo)致異常的原因很多,比如文件找不到、數(shù)組越界、除以零等。當(dāng)異常出現(xiàn)時(shí),一個(gè)異常對(duì)象將被自動(dòng)生成并傳遞給java“運(yùn)行時(shí)環(huán)境”(runtime system),說(shuō)得專(zhuān)業(yè)一點(diǎn),就是拋出一個(gè)異常。異常對(duì)象包含了異常類(lèi)型、程序運(yùn)行狀態(tài)等信息?!斑\(yùn)行時(shí)環(huán)境”得到異常對(duì)象后便打斷程序的正常流程,自動(dòng)尋找一個(gè)專(zhuān)門(mén)
27、處理該異常的代碼塊來(lái)解決問(wèn)題。這樣的代碼塊稱(chēng)作異常句柄(exception handler)。你可以在異常句柄中嘗試修復(fù)錯(cuò)誤、重試或者報(bào)錯(cuò),或者實(shí)在無(wú)法進(jìn)行下去的時(shí)候來(lái)個(gè)自我了斷。如果“運(yùn)行時(shí)環(huán)境”找不到異常句柄,java程序便會(huì)自行中斷。一個(gè)典型的異常處理如下:try statement(s); catch (exceptiontype1 name) statement(s); catch (exceptiontype2 name) statement(s); finally statement(s);其中:try語(yǔ)句括起來(lái)的語(yǔ)句可能拋出異常。try語(yǔ)句至少要搭配一個(gè)catch語(yǔ)句或fina
28、lly語(yǔ)句,不能單獨(dú)使用。catch語(yǔ)句必須和一個(gè)try語(yǔ)句配套使用,根據(jù)異常類(lèi)型(exception type)分別處理不同的異常。也就是說(shuō),java有許多預(yù)先定義的異常,你可以通過(guò)多個(gè)catch語(yǔ)句對(duì)它們分門(mén)別類(lèi)地處理。你還可以自己定義異常類(lèi)型。如果try語(yǔ)句塊中沒(méi)有拋出異常,這里自然不會(huì)被執(zhí)行。finally語(yǔ)句也必須和一個(gè)try語(yǔ)句配套使用,與catch語(yǔ)句不同,無(wú)論try語(yǔ)句塊中是否拋出異常,finally所包括的語(yǔ)句塊都會(huì)被執(zhí)行我設(shè)計(jì)的猜數(shù)字游戲需要從控制臺(tái)獲取玩家輸入的數(shù)字,有多個(gè)異常處理可以編寫(xiě)如下代碼: /set look & feel try javax.swing.uim
29、anager.setlookandfeel(com.sun.java.swing.plaf.windows.windowslookandfeel); catch(exception e) e.printstacktrace(); / try,catch的異常管理。 try guess=integer.parseint(jtextfield1.gettext(); catch (exception e) 使用異常機(jī)制的諸多好處使得程序更健壯,界面更友善。把程序的業(yè)務(wù)邏輯與錯(cuò)誤處理分開(kāi),代碼更合理,更美觀(guān)。異常可以分層次處理,使得代碼更簡(jiǎn)潔。同類(lèi)的異??梢詺w到一類(lèi)一起處理,處理更方便。4.3 類(lèi)與
30、數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)首先搭建java程序框架。打開(kāi)eclipse,新建名為guessnumbergame的項(xiàng)目,然后新建名為guessnumber的java類(lèi)。guessnumber加上合適的javadoc。(1)隨機(jī)數(shù)的產(chǎn)生我們可以借助java api提供的random類(lèi)來(lái)產(chǎn)生一個(gè)隨機(jī)數(shù)。首先在main函數(shù)中加入以下三行代碼:/ 新建一個(gè)隨機(jī)數(shù)產(chǎn)生器,然后生成一個(gè)1到100之間的整數(shù)。random random = new random();int number = random.nextint(100);第一句定義了一個(gè)類(lèi)型是random類(lèi)的變量random(java語(yǔ)言區(qū)分大小寫(xiě),所以rando
31、m和random是不同意思),并且用new操作符生成一個(gè)random類(lèi)的實(shí)例賦給random變量。random變量實(shí)際上是一個(gè)參照,指向內(nèi)存中用new操作符新建的random類(lèi)的實(shí)大多數(shù)情況下可以把random直接看做是一個(gè)random類(lèi)的實(shí)例,可以通過(guò)“random”加上“.操作符”來(lái)調(diào)用random類(lèi)的方法,用random.nextint(100)來(lái)獲取一個(gè)1至100之間的隨機(jī)數(shù)。第二句語(yǔ)句定義一個(gè)整型變量number來(lái)保存隨機(jī)產(chǎn)生的整數(shù),并且用直接初始化的方法把random產(chǎn)生的隨機(jī)數(shù)賦給number變量。(如圖4.3.1)圖4.3.1(2)輸入輸出界面標(biāo)準(zhǔn)輸入輸出(standard i/o)是指可以被應(yīng)用程序使用的信息流。比如,應(yīng)用程序可以從標(biāo)準(zhǔn)輸入(standard input)讀取數(shù)據(jù),向標(biāo)準(zhǔn)輸出(standard output)寫(xiě)數(shù)據(jù),把出錯(cuò)信息發(fā)送到標(biāo)準(zhǔn)錯(cuò)誤(standard error)。猜數(shù)字游戲主要用到標(biāo)準(zhǔn)輸入,即控制臺(tái)輸入。用system.out.println進(jìn)行控制臺(tái)輸出,用system.in進(jìn)行控制臺(tái)輸入。它是一個(gè)純粹的輸入流,而猜數(shù)字游戲主要是通過(guò)控制臺(tái)獲取玩家的字符輸入,則需要把它包裝成一個(gè)bufferedreader實(shí)例來(lái)使用bufferedreader input = new bufferedreader(new input
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智慧城市展覽項(xiàng)目合作協(xié)議4篇
- 2025年度智慧城市基礎(chǔ)設(shè)施顧問(wèn)合同4篇
- 2025年度企業(yè)人力資源戰(zhàn)略規(guī)劃與執(zhí)行合同3篇
- 2024版經(jīng)營(yíng)辦公場(chǎng)地租賃合同
- 2025年度石料廠(chǎng)承包與環(huán)保項(xiàng)目融資合作協(xié)議書(shū)4篇
- 2025年度智能冷庫(kù)建設(shè)與租賃服務(wù)合同范本4篇
- 2024版旅客運(yùn)輸合同范本
- 2025年度土地承包經(jīng)營(yíng)權(quán)流轉(zhuǎn)與農(nóng)村土地整治合同4篇
- 2024-2026年中國(guó)銀行IT市場(chǎng)供需現(xiàn)狀及投資戰(zhàn)略研究報(bào)告
- 中國(guó)水力不從心電項(xiàng)目投資可行性研究報(bào)告
- 風(fēng)水學(xué)的基礎(chǔ)知識(shí)培訓(xùn)
- 吸入療法在呼吸康復(fù)應(yīng)用中的中國(guó)專(zhuān)家共識(shí)2022版
- 1-35kV電纜技術(shù)參數(shù)表
- 信息科技課程標(biāo)準(zhǔn)測(cè)(2022版)考試題庫(kù)及答案
- 施工組織設(shè)計(jì)方案針對(duì)性、完整性
- 2002版干部履歷表(貴州省)
- DL∕T 1909-2018 -48V電力通信直流電源系統(tǒng)技術(shù)規(guī)范
- 2024年服裝制版師(高級(jí))職業(yè)鑒定考試復(fù)習(xí)題庫(kù)(含答案)
- 門(mén)診部縮短就診等候時(shí)間PDCA案例-課件
- 第21課《鄒忌諷齊王納諫》對(duì)比閱讀 部編版語(yǔ)文九年級(jí)下冊(cè)
評(píng)論
0/150
提交評(píng)論