java課程設(shè)計報告書_第1頁
java課程設(shè)計報告書_第2頁
java課程設(shè)計報告書_第3頁
java課程設(shè)計報告書_第4頁
java課程設(shè)計報告書_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上課程設(shè)計報告( 20162017學(xué)年第2學(xué)期)課程名稱Java課程設(shè)計報告學(xué)生姓名張曉甜班級學(xué)號4指導(dǎo)教師康軍完成日期2017.6.23專心-專注-專業(yè)目錄一、 設(shè)計目的及要求 1.1課程設(shè)計目的通過本游戲的設(shè)計,綜合自己在校期間所學(xué)的理論知識,設(shè)計開發(fā)24點游戲,使自己熟悉應(yīng)用系統(tǒng)的開發(fā)過程,進一步理解面向?qū)ο蟪绦蛟O(shè)計的思想和方法,利用Java語言進行程序設(shè)計的能力,培養(yǎng)自主思考能力,檢驗學(xué)習(xí)效果和動手能力,初步掌握基礎(chǔ)編程知識,并鍛煉發(fā)現(xiàn)問題、分析問題和解決問題的能力。從而達到理論與實踐相結(jié)合的目的。加深對Java語言與面向?qū)ο蠹夹g(shù)課程基礎(chǔ)知識的理解,掌握J(rèn)ava

2、語言面向?qū)ο蟪绦蛟O(shè)計的開發(fā)方法和步驟。1.2課程設(shè)計內(nèi)容和要求24點游戲是一種使用撲克牌來進行的益智的游戲,游戲內(nèi)容為:從一副撲克牌四個花色的1到K等52張牌中,任意抽取4張牌,運用加、減、乘、除和括號等運算符把牌面上的數(shù)進行運算得到24。游戲有不同的版本,其實是對J、Q、和K的處理有所不同。有的版本版本是把J、Q、和K去除,只用1到10來進行游戲;有的版本是把J、Q、和K當(dāng)成10;還有的版本是用J表示11,Q表示12,K表示13。此次課程設(shè)計采用的是把J表示11,Q表示12,K表示13,使游戲的四張牌在1K這13張牌中隨機取牌。具體功能如下: 對游戲設(shè)計三個難易級別,分別為初級、中

3、級和高級。每次開始游戲前可以根據(jù)玩家的需要進行難度設(shè)置,如若不設(shè)置,系統(tǒng)默認(rèn)難度級別為初級,設(shè)置完難度級別之后就可以開始游戲了,單擊“發(fā)牌”按鈕,桌面上出現(xiàn)四張翻開的撲克牌,與此同時,游戲開始計時,時間條開始前進。 在規(guī)定的時間內(nèi),玩家可以在“輸入結(jié)果”的編輯框中輸入自己想好的算式,然后點擊“驗算”按鈕:如果輸入的算式經(jīng)運算后所的答案正確,則會彈出“恭喜,你成功答對了一題”的窗口;如果輸入的數(shù)字與給出的牌的數(shù)字不符或者符號不合法,則會彈出“抱歉,你答錯了”的窗口;如果未輸入任何的數(shù)字和算符,則會彈出“輸入不能為空!”的窗口。 程序中可以記錄游戲的歷史記錄。如果在規(guī)定的時間內(nèi)

4、,玩家沒有點擊驗算按鈕,則會彈出“對不起,你失敗了”的窗口。在結(jié)束本輪游戲后,如果玩家想繼續(xù)游戲,則可點擊“發(fā)牌”按鈕即可重新發(fā)牌,開始下一輪的游戲;如果玩家想結(jié)束游戲,則可點擊“結(jié)束”按鈕即可結(jié)束游戲二、系統(tǒng)需求分析2.1 系統(tǒng)目標(biāo)使用所學(xué)知識制作一個基于java的24點游戲。2.2游戲需求游戲界面需求:設(shè)計良好的游戲界面可以讓玩家充分感受到游戲帶來的娛樂性,游戲的背景色是綠色,盡量降低玩家游戲時的用眼疲勞,最大化的為玩家?guī)硎孢m的娛樂環(huán)境。游戲形狀需求:根據(jù)數(shù)字顏色的不同,顯示不同的紙牌。鼠標(biāo)處理事件需求:通過點擊菜單欄中對應(yīng)的菜單項,可以實現(xiàn)游戲開始、結(jié)束、數(shù)字的驗算及其他游戲選擇等功能

5、。2.3 開發(fā)環(huán)境MyEclipse,windowbuilder三、系統(tǒng)總體設(shè)計3.1系統(tǒng)的功能模塊劃分圖一系統(tǒng)功能圖3.2系統(tǒng)流程圖保存歷史記錄至數(shù)據(jù)庫中,并顯示在表格中YNNYNYYN是否設(shè)置難度?1.低級2.中級3.高級系統(tǒng)默認(rèn)難度級別為中級初始化發(fā)牌計時開始輸入算式,進行計算比較函數(shù)值與參數(shù)值得大小顯示“錯誤!”驗算函數(shù)判斷計算結(jié)果是否為24?超時顯示:“超時”輸入字符錯誤:顯示:“錯誤!”運算結(jié)果正確:“正確!”運算結(jié)果錯誤:顯示:“錯誤!”繼續(xù)否?結(jié)束開始圖二系統(tǒng)流程圖四、系統(tǒng)詳細(xì)設(shè)計4.1具體的設(shè)計步驟如下:  1)在對話框中添加4個圖像(分別用于四張撲克牌)

6、,3個按鈕(分別是發(fā)牌、運算、結(jié)束),1個編輯框,一個進度條和一個下拉框(用于選擇難度級別)接著根據(jù)屬性對以上所添加的控件進行屬性修改,主要進行重命名,以便編輯源代碼的時候區(qū)分,另外對圖像的處理除了對其進行重命名外還要對其添加位圖。之后通過打開圖片,并對其進行重命名。  2)根據(jù)流程圖在類的原文件中逐一添加實現(xiàn)各個模塊其功能所需要的各種函數(shù),并添加相應(yīng)的源代碼,同時在頭文件中添加對各種函數(shù)及變量的聲明。 3)對編譯好的程序進行保存,開始進行調(diào)試,邊調(diào)試邊根據(jù)報錯對原程序進行修改,直到程序不在報錯為止。4.2界面設(shè)計表1 控件類型、ID及相關(guān)說明對象變量名Capti

7、on或說明靜態(tài)文本Label耗時標(biāo)志靜態(tài)文本Label-1第一張圖靜態(tài)文本Label-2第二張圖靜態(tài)文本Label-3第三張圖靜態(tài)文本Label-4第四張圖靜態(tài)文本lblNewLabel輸入算式靜態(tài)文本lblNewLabel-1歷史記錄靜態(tài)文本Label-5選擇難度下拉框comboBox選擇難度表格table歷史記錄編輯框textField輸入計算滾動條progressBar耗時按鈕btnNewButton發(fā)牌按鈕Button驗算按鈕Button-1結(jié)束4.3關(guān)鍵功能的實現(xiàn)(1)發(fā)牌功能的實現(xiàn)首先,通過Numberi=rand()%13。來產(chǎn)生0-9的隨機數(shù),利用該函數(shù)加載了標(biāo)號110的10張

8、紙牌和一張背景紙牌。然后運行中的以下一段代碼,即可在圖像框中得到四張鋪開的紙牌。代碼如下:Random random=new Random();r1=random.nextInt(10)+1;(2)計時功能的實現(xiàn)首先,定義線程類,通過每隔不同的時間來發(fā)送信息來控制三個級別的時間不同。設(shè)置了時間限制,如果時間超過代表游戲結(jié)束,用戶沒有時間進行思考了,本輪游戲結(jié)束。源代碼如下:class MyThread extends Thread boolean lock=true;JProgressBar progressBar

9、;JLabel label_1;JLabel label_2;JLabel label_3;JLabel label_4;JTextField textField;JButton button;int difficulty=0;MyThread(JProgressBar progressBar,JLabel label_1,JLabel label_2,JLabel label_3,JLabel label_4,JTextField textField,int

10、60;difficulty,JButton button)gressBar=progressBar;this.label_1=label_1;this.label_2=label_2;this.label_3=label_3;this.label_4=label_4;this.textField=textField;this.difficulty=difficulty;this.button=button;public void run() / TODO Auto-generated method 

11、stubfor(int i=0;i<=60-20*difficulty;i+)try if(lock=true)this.sleep(1000);progressBar.setValue(i*(difficulty+1); catch (InterruptedException e) / TODO Auto-generated catch blocklock=false;if(lock=true)JOptionPane.showMessageDialog(null, "

12、對不起,沒有時間了", "Message",JOptionPane.WARNING_MESSAGE);  label_1.setIcon(new ImageIcon("C:UserszcsWorkspacesMyEclipse 2016 CIpukeImage1.jpg");label_2.setIcon(new ImageIcon("C:UserszcsWorkspacesMyEclipse 2016 CIpukeImage2.jpg"

13、;);label_3.setIcon(new ImageIcon("C:UserszcsWorkspacesMyEclipse 2016 CIpukeImage1.jpg");label_4.setIcon(new ImageIcon("C:UserszcsWorkspacesMyEclipse 2016 CIpukeImage2.jpg");progressBar.setValue(0);textField.setText("");textField.setEnabled(

14、false);button.setEnabled(false);textField.setText(null);(3)驗算功能的實現(xiàn)只簡單介紹彈出框的實現(xiàn)的功能完成。在規(guī)定的時間內(nèi)玩家輸入算式進行驗算,根據(jù)不同的情況會彈出不同的對話框。有以下兩種情況:如果玩家輸入的數(shù)字與撲克牌給出的數(shù)字不符合,則會彈出“抱歉,你答錯了”的提示對話框。如果玩家輸入算式經(jīng)運算后所得答案正確,則會彈出“恭喜,你成功答對了一題”的提示對話框。具體代碼如下:button.addMouseListener(new MouseAdapter() Overridepublic void 

15、;mouseClicked(MouseEvent e) String s= textField.getText().toString();if(cacComplex(s)=24&&kuohao(s)=1&&shuzi(s)=1)JOptionPane.showMessageDialog(null, "恭喜,你成功答對了一題", "Message",JOptionPane.PLAIN_MESSAGE);currenttime=System.currentTimeMi

16、llis();if(time>currenttime-firsttime|time=0)time=(int) (currenttime-firsttime);correct+;textField.setText("");label_1.setIcon(new ImageIcon("C:UserszcsWorkspacesMyEclipse 2016 CIpukeImage1.jpg");label_2.setIcon(new ImageIcon("C:UserszcsWorkspacesM

17、yEclipse 2016 CIpukeImage2.jpg");label_3.setIcon(new ImageIcon("C:UserszcsWorkspacesMyEclipse 2016 CIpukeImage1.jpg");label_4.setIcon(new ImageIcon("C:UserszcsWorkspacesMyEclipse 2016 CIpukeImage2.jpg");errupt();progressBar.s

18、etValue(0);textField.setEnabled(false);button.setEnabled(false);elseJOptionPane.showMessageDialog(null, "抱歉,你答錯了", "Message",JOptionPane.PLAIN_MESSAGE);textField.setText("");label_1.setIcon(new ImageIcon("C:UserszcsWorkspacesMyEclipse 2016 

19、CIpukeImage1.jpg");label_2.setIcon(new ImageIcon("C:UserszcsWorkspacesMyEclipse 2016 CIpukeImage2.jpg");label_3.setIcon(new ImageIcon("C:UserszcsWorkspacesMyEclipse 2016 CIpukeImage1.jpg");label_4.setIcon(new ImageIcon("C:UserszcsWorks

20、pacesMyEclipse 2016 CIpukeImage2.jpg");errupt();progressBar.setValue(0);textField.setEnabled(false);button.setEnabled(false););計算功能的實現(xiàn)對于輸入結(jié)果的計算,主要是通過int LastPos(CString Str),int FirstPos(CString Str),char FirstF(CString Str),int SubCompute(CString Str),int TotalCompute(CStri

21、ng Str)等函數(shù)來來確定輸入的算式的優(yōu)先級別并且計算出輸入算式的最終結(jié)果。現(xiàn)摘兩段代碼進行詳細(xì)說明private static double cacComplex(String str) if (str.equals("")return 0;/System.out.println("CAC:" + str);str = str.replaceAll("(", "(").replaceAll(&

22、quot;)", ")");int cl = str.lastIndexOf('(');if (cl = -1)return cac(str);int cr = str.indexOf(')', cl);String left = str.substring(0, cl);String right = str.substring(cr 

23、+ 1);String middle = str.substring(cl + 1, cr);return cacComplex(left + cac(middle) + right);public static double cac(String str) if (str.equals("")return 0;int ml = str.indexOf(&#

24、39;*');int dl = str.indexOf('/');if (ml = -1 && dl = -1) return cacNoMD(str);int index = ml = -1 ? dl : ml;/ 4+5*6*7+8String left = str.substring(0, i

25、ndex);/ 4+5String m1 = lastNumber(left);left = left.substring(0, left.length() - m1.length();String right = str.substring(index + 1);/ 6*7+8String m2 = firstNumber(right);/ m2:6right = right.subs

26、tring(m2.length();/ *7+8double d1 = Double.parseDouble(m1);double d2 = Double.parseDouble(m2);double tmp = 0;if (index = ml) tmp = d1 * d2; else if (index = dl) tmp = d1&

27、#160;/ d2;return cac(left + tmp + right);private static String lastNumber(String str) StringBuilder sb = new StringBuilder();for (int i = str.length() - 1; i >= 0; i-) 

28、;char c = str.charAt(i);if (!Character.isDigit(c) && c != '.')break;sb.append(c);return sb.reverse().toString();private static String firstNumber(String str) StringBuilder sb = new StringBuilder

29、();for (char c : str.toCharArray() if (!Character.isDigit(c) && c != '.')break;sb.append(c);return sb.toString();private static double cacNoMD(String str) double ret = 0;StringBuilder 

30、sb = new StringBuilder();char sign = '+'for (char c : (str + "+").toCharArray() if (!Character.isDigit(c) && c != '.') if (sb.length() = 0)continue;double&#

31、160;tmp = Double.parseDouble(sb.toString();if (sign = '+') ret += tmp; else ret -= tmp;sb = new StringBuilder();sign = c; else sb.append(c);return ret;括號匹配功能的實現(xiàn)進行括號配對并優(yōu)先進行括號內(nèi)運算:private st

32、atic double kuohao(String str)Stack<Character> stack =new Stack<Character>();for(int i=0;i<str.length();i+)if(str.charAt(i)='('|str.charAt(i)=')')if(stack.isEmpty()stack.push(str.charAt(i);else if(stack.peek()='('&&am

33、p;str.charAt(i)=')')stack.pop();elsestack.push(str.charAt(i);if(stack.isEmpty()return 1;elsereturn 0;我負(fù)責(zé)的是驗算功能的實現(xiàn),1. 括號匹配:建立一個棧stock,自右向左遍歷字符串,當(dāng)匹配到“(”,將“(”放入棧中,繼續(xù)遍歷。當(dāng)匹配到“)”,如果棧頂為“(”,就執(zhí)行stock.pop(),取出棧頂,否則就將字符放入棧中。直到遍歷完字符串。如果??談t匹配成功,否則就算匹配失敗。2. 檢驗次數(shù):利用Pattern類,Matcher類,遍歷字符串并檢測其中中出現(xiàn)

34、4個隨機數(shù)的次數(shù),超過1次表明錯誤。3. 檢驗運算式:引入javascript中eval函數(shù),檢驗表達式,如果錯誤,返回null。 五、代碼調(diào)試(1)進入游戲界面說明:本界面為游戲初始界面,默認(rèn)難度級別為初級。(2)發(fā)牌說明:點擊“發(fā)牌”按鈕,自動發(fā)牌,計時進度條開始滾動。(3)輸入驗算公式界面說明:驗算正確說明:驗算錯誤(4)沒有來的及輸入表達式,超過限制時間,頁面顯示為說明:.如果在規(guī)定的時間內(nèi),玩家沒有點擊驗算按鈕,則會彈出“內(nèi)部錯誤”的窗口。 (5)歷史記錄說明:每結(jié)束一次游戲會將歷史記錄在數(shù)據(jù)庫中。六、小結(jié)心得與體會開始了為期兩周的緊張的java課程設(shè)計,這已經(jīng)是大學(xué)時代的第四次課程

35、設(shè)計了,較之之前的三次,感覺這次的與以往大大不同,是利用自己的知識開發(fā)一個小游戲,心里著實興奮了一把,但是這個設(shè)計用的是大二下學(xué)期學(xué)的java的知識,不是很理解或是熟練運用,所以剛剛開始的時候,毫無頭緒,感覺好難真的好難,難于上青天。心里障礙阻當(dāng)著我讓我不敢向前邁步。我很怕自己做不好,怕自己不能按時完成,很怕自己不如其他同學(xué)。內(nèi)心滿是恐懼,被恐懼占具的心靈又怎么能出色的完成課程設(shè)計呢?最初進行設(shè)計的時候,沒有一點頭緒,后來上網(wǎng)查閱,將計算器和菜單欄制作這兩個范例看了幾遍。感覺很有收獲,但是對于進程條的設(shè)置還是不清楚,又翻出課件來看重新學(xué)習(xí),經(jīng)與同學(xué)討論,終于弄清了進程條的設(shè)置。而對于編程,是最

36、龐大又棘手的一塊,那是忘得更多了,于是把課本和圖書館借來的參考書重新針對性的學(xué)了一次,遇到難處先是仔細(xì)的思考然后在向同學(xué)請教??梢哉f開始的那么幾天都是在查找資料,翻閱相關(guān)的書籍。在最后添加代碼的時候還有一些程序不知道怎么寫。于是,于是又利用了網(wǎng)絡(luò)資源,收集里了一些,經(jīng)分析、查詢資料仍有一些地方看不懂。就請教同學(xué),嘗試往對話框中添加相應(yīng)代碼的方法。根據(jù)一大段的分析,感覺程序執(zhí)行某個功能,將這段代碼添加到對應(yīng)位置。所有的代碼添加完后,運行、調(diào)試,開始會出現(xiàn)了很多很多的錯誤。逐條進行修改,再進行運行和調(diào)試,有時候錯誤看不懂,就找同學(xué)商量。也不知道錯了多少次,改了多少次,終于最后做出了完美的游戲界面。

37、終于完成了設(shè)計。但是本次課程設(shè)計是自己第一次開發(fā)小游戲,心理很甜。通過此次課程設(shè)計,收獲頗多,最主要的是對java知識重新學(xué)習(xí)了一遍,感受到了它的博大精深. 首先,編程有了很大的提高,雖然有時候自己沒有思路,但是可以借鑒別人的代碼,看別人設(shè)計的思路,理解的同時自己小試一下也可以編出來,所以凡事不能被困難嚇倒,只要有開始,去嘗試。就會有意想不到的收獲。再次,在運行、調(diào)試過程中也學(xué)到了很多,以前編程最怕的就是報錯,尤其是錯誤多了的時候,感覺毫無頭緒直接頭大,但是編程不可能不出錯,報錯,只要逐一對付,然后細(xì)心研究改正,終究一切問題都會迎刃而解的,所以遇到問題,不能急,要心平氣和的去應(yīng)對,才能把所學(xué)的

38、只是真正用于實際,這不得不說正是我們當(dāng)代大學(xué)生所嚴(yán)重缺乏的,以后的學(xué)習(xí)中更應(yīng)注意。通過這次課程設(shè)計,加強了我動手、思考和解決問題的能力。比如細(xì)心還有耐心還有對自己有一定的自信等等。而且課程設(shè)計同時也是對課本知識的鞏固和加強,由于課本上的知識太多,平時只有課間的學(xué)習(xí)是遠遠不夠的,所以以后要多花時間溫故知新。兩個星期的課程設(shè)計,過程曲折可謂一語難盡。在此期間我也從毫無頭緒到一度熱情高漲。到從開始時滿富盛激情到調(diào)不出結(jié)果的焦頭爛額,到最后慧心的笑,點點滴滴無不令我回味無長。總之對我而言,知識上的收獲重要,精神上的豐收更加可喜。挫折是一份財富,經(jīng)歷是一份擁有。這次課設(shè)必是我人生旅途上一個非常美好的回憶

39、!參考文獻1耿祥義,張躍平.Java面向?qū)ο蟪绦蛟O(shè)計 M.北京:清華大學(xué)出版社,2009.11.七、附錄import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import java.awt.Color;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JProg

40、ressBar;import javax.swing.JScrollPane;import javax.swing.SwingWorker;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.List;import java.util.concurrent.ExecutionException;import java.util.concurrent.TimeUnit;import java.util.concurrent.TimeoutException;import java

41、.util.regex.Matcher;import java.util.regex.Pattern;import java.awt.Rectangle;import javax.swing.border.CompoundBorder;import javax.swing.JLabel;import javax.swing.JOptionPane;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.Font;import javax.swing.ImageIcon;impo

42、rt java.util.Random;import java.util.Stack;import javax.swing.JTextField;import javax.swing.SwingConstants;import javax.swing.JList;import javax.swing.JTable;import javax.swing.table.DefaultTableModel;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.Script

43、Exception;import javax.swing.DefaultComboBoxModel;import java.awt.event.ItemListener;import java.awt.event.ItemEvent;import java.sql.*;public class MyFrame extends JFrame private JPanel contentPane;private JProgressBar progressBar;private JLabel label_1;private JLabel label_2;private JLabel label_3;

44、private JLabel label_4;MyThread thread;private JTextField textField;private JScrollPane scrollPane;private JTable table;JComboBox comboBox;JButton button;int difficulty=0;int total=0;int correct=0;int time=0;long firsttime;long currenttime;int r1,r2,r3,r4;/* * Launch the application. */public static

45、 void main(String args) throws ExceptionEventQueue.invokeLater(new Runnable() public void run() try MyFrame frame = new MyFrame();frame.setVisible(true); catch (Exception e) e.printStackTrace(););private static double cacComplex(String str) if (str.equals("")return 0;/System.out.println(&q

46、uot;CAC:" + str);str = str.replaceAll("(", "(").replaceAll(")", ")");int cl = str.lastIndexOf('(');if (cl = -1)return cac(str);int cr = str.indexOf(')', cl);String left = str.substring(0, cl);String right = str.substring(cr + 1);String mid

47、dle = str.substring(cl + 1, cr);return cacComplex(left + cac(middle) + right);public static double cac(String str) if (str.equals("")return 0;int ml = str.indexOf('*');int dl = str.indexOf('/');if (ml = -1 && dl = -1) return cacNoMD(str);int index = ml = -1 ? dl : m

48、l;/ 4+5*6*7+8String left = str.substring(0, index);/ 4+5String m1 = lastNumber(left);left = left.substring(0, left.length() - m1.length();String right = str.substring(index + 1);/ 6*7+8String m2 = firstNumber(right);/ m2:6right = right.substring(m2.length();/ *7+8double d1 = Double.parseDouble(m1);d

49、ouble d2 = Double.parseDouble(m2);double tmp = 0;if (index = ml) tmp = d1 * d2; else if (index = dl) tmp = d1 / d2;return cac(left + tmp + right);private static String lastNumber(String str) StringBuilder sb = new StringBuilder();for (int i = str.length() - 1; i >= 0; i-) char c = str.charAt(i);i

50、f (!Character.isDigit(c) && c != '.')break;sb.append(c);return sb.reverse().toString();private static String firstNumber(String str) StringBuilder sb = new StringBuilder();for (char c : str.toCharArray() if (!Character.isDigit(c) && c != '.')break;sb.append(c);return

51、sb.toString();private static double cacNoMD(String str) double ret = 0;StringBuilder sb = new StringBuilder();char sign = '+'for (char c : (str + "+").toCharArray() if (!Character.isDigit(c) && c != '.') if (sb.length() = 0)continue;double tmp = Double.parseDouble(s

52、b.toString();if (sign = '+') ret += tmp; else ret -= tmp;sb = new StringBuilder();sign = c; else sb.append(c);return ret;private static double kuohao(String str)Stack<Character> stack =new Stack<Character>();for(int i=0;i<str.length();i+)if(str.charAt(i)='('|str.charAt

53、(i)=')')if(stack.isEmpty()stack.push(str.charAt(i);else if(stack.peek()='('&&str.charAt(i)=')')stack.pop();elsestack.push(str.charAt(i);if(stack.isEmpty()return 1;elsereturn 0;private int shuzi(String str)int count1 = 0; Pattern p1 = Ppile(String.valueOf(r1); Matcher

54、m1 = p1.matcher(str); while (m1.find() count1+; int count2 = 0; Pattern p2 = Ppile(String.valueOf(r2); Matcher m2 = p2.matcher(str); while (m2.find() count2+; int count3 = 0; Pattern p3 = Ppile(String.valueOf(r3); Matcher m3 = p3.matcher(str); while (m3.find() count3+; int count4 = 0; Pattern p4 = P

55、pile(String.valueOf(r4); Matcher m4 = p1.matcher(str); while (m4.find() count4+; / ScriptEngineManager sem = new ScriptEngineManager();/ ScriptEngine se = sem.getEngineByName("js");/ / String s= textField.getText().toString();/ int result = 0;/ /long startTime = System.currentTimeMillis();

56、/ try/ result = (int)(se.eval(str);/ / catch (ScriptException e1) / return 0;/ / System.out.println(result); if(count1=1&&count2=1&&count3=1&&count4=1) return 1; else return 0; /* * Create the frame. */public MyFrame() setResizable(false);setTitle("24u70B9u6E38u620F"

57、;);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 726, 392);contentPane = new JPanel();contentPane.setBackground(new Color(0, 128, 0);contentPane.setBorder(new EmptyBorder(5, 5, 5, 5);setContentPane(contentPane);contentPane.setLayout(null);progressBar = new JProgressBar();progres

58、sBar.setBounds(102, 281, 383, 29);progressBar.setMaximum(60);contentPane.add(progressBar);JButton btnNewButton = new JButton("u53D1u724C");btnNewButton.setBounds(32, 227, 68, 21);btnNewButton.setFont(new Font("宋體", Font.PLAIN, 15);btnNewButton.addMouseListener(new MouseAdapter()

59、Overridepublic void mouseClicked(MouseEvent e) total+;firsttime=System.currentTimeMillis();textField.setEnabled(true);button.setEnabled(true);comboBox.setEnabled(false);Random random=new Random();r1=random.nextInt(10)+1;r2=random.nextInt(10)+1;while(r2=r1)r2=random.nextInt(10)+1;r3=random.nextInt(10)+1;while(r3=r2|r3=r1)r3=random.nextInt(10)+1;r4=random.nextInt(10)+1;while(r4=r1|r4=r2|r4=r

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論