




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第2章標識符、關鍵字和數據類型4.下列哪些語句是錯誤的:intx=8;byteb=127;b=x;答:b=x語句錯誤;原因是高級別的變量賦值給低級別的變量時,一定要用顯式轉換即b=(byte)x;。5.下列程序的輸出結果是什么?publicclassE{publicstaticvoidmain(Stringargs[]){long[]a={1,2,3,4};long[]b={100,200,300,400,500};b=a;System.out.println("數組b的長度:"+b.length);System.out.println("b[0]="+b[0]);}}答:數組b的長度:4b[0]=16.上機運行下列程序,注意觀察輸出結果。publicclassE{publicstaticvoidmain(Stringargs[]){for(inti=20302;i<20322;i++){System.out.println((char)i);}}}答:低住佐佑佒體佔何佖佗佘余佚佛作佝佞佟你佡7.System.out.println(“你好”);可輸出字符串,也可以使用System.out.println()輸出變量或表達式的值,只需使用并置符號“+”將變量、表達式或一個常數值與一個字符串并置即可,如:System.out.println(“”+x);System.out.println(“:”+123+“大于”+122);等。上機調試下列程序,注意觀察結果,特別注意System.out.print()和System.out.println()的區別。publicclassOutputData{publicstaticvoidmain(Stringargs[]){intx=234,y=432;System.out.println(x+"<"+(2*x));System.out.print("我輸出結果后不回車");System.out.println("我輸出結果后自動回車到下一行");System.out.println("x+y="+(x+y));System.out.println(""+x+y+"=234432");}}答:234<468我輸出結果后不回車我輸出結果后自動回車到下一行x+y=666234432=2344328.編寫一個Java應用程序,輸出全部的希臘字母。答:publicclassXLWords{publicstaticvoidmain(Stringargs[]){for(inti=913;i<930;i++){System.out.print((char)i+"");}for(intj=931;j<938;j++){System.out.print((char)j+"");}for(intk=945;k<962;k++){System.out.print((char)k+"");}for(intt=963;t<969;t++){System.out.print((char)t+"");}}}運算符、表達式和語句1.下列程序的輸出結果是什么?publicclassE{publicstaticvoidmain(Stringargs[]){charx='你',y='e',z='吃';if(x>'A'){y='愛';z='情';}elsey='我';z='她';System.out.println(""+x+y+z);}}答:你愛她2.下列程序的輸出結果是什么?publicclassE3{publicstaticvoidmain(Stringargs[]){charc='\0';for(inti=1;i<=4;i++){switch(i){case1:c='b';System.out.print(c);case2:c='e';System.out.print(c);break;case3:c='p';System.out.print(c);default:System.out.print("!");}}}}答:beep!!3.編寫應用程序,求1!+2!+…+10!。答:classFact{publicstaticvoidmain(Stringargs[]){intfact,sum=0;for(inti=1;i<=10;i++){fact=1;for(intj=1;j<=i;j++)fact*=j;sum+=fact;}System.out.println("1到10的階乘之和是:"+sum);}}4.編寫一個應用程序,求100以內的全部素數。答:classPrimes{publicstaticvoidmain(Stringargs[]){intw=1;for(inti=2;i<=100;i++){for(intj=2;j<i;j++){w=i%j;if(w==0)break;}if(w!=0)System.out.println(i+"是素數");}}}5.分別用do―while和for循環計算1+1/2!+1/3!+1/4!+…的前20項和。答:①for循環classSum{publicstaticvoidmain(Stringargs[]){intfact;doublesum=0;for(inti=1;i<=20;i++){fact=1;for(intj=1;j<=i;j++)fact*=j;sum+=1.0/fact;}System.out.println(sum);}}②do―while循環classSum{publicstaticvoidmain(Stringargs[]){inti=1;intfact;doublesum=0;do{fact=1;intj=0;while(++j<=i)fact*=j;sum+=1.0/fact;}while(++i<=20);System.out.println(sum);}}6.一個數如果恰好等于它的因子之和,這個數就稱為“完數”。編寫應用程序,求1000之內的所有完數。答:classWanshu{publicstaticvoidmain(Stringargs[]){intx,i,sum;for(x=1;x<=1000;x++){sum=0;for(i=1;i<x;i++){if(x%i==0)sum+=i;}if(x==sum)System.out.println(x+"是完數");}}}7.編寫應用程序,分別使用while和for循環計算8+88+888+…前10項之和。答:①for循環classTheSum{publicstaticvoidmain(Stringargs[]){longsum=0,data=8;for(inti=1;i<=10;i++){sum=sum+data;data=data*10+8;}System.out.println(sum);}}②while循環classTheSum{publicstaticvoidmain(Stringargs[]){longsum=0,data=8,i=0;while(++i<=10){sum=sum+data;data=data*10+8;}System.out.println(sum);}}8.編寫應用程序,輸出滿足1+2+3+…+n<8888的最大正整數n。答:classMaxn{publicstaticvoidmain(Stringargs[]){intk=1,sum=0;while((sum+=k)<8888)k++;k--;System.out.println("最大能取到:"+k);}}第4章類、對象和接口13.請寫出下列程序的輸出結果。classA{publicintf(intx){returnx+1;}}classBextendsA{publicintf(intx){returnx*x;}}publicclassE{publicstaticvoidmain(Stringargs[]){Aa=newB();intm=a.f(10);System.out.println(m);}}答:10014.請寫出下列程序的輸出結果。classA{intx;publicvoidsetX(intx){this.x=x;}intgetX(){returnx;}}classB{publicvoidf(Aa){a.setX(100);}}publicclassE{publicstaticvoidmain(Stringargs[]){Aa=newA();a.setX(8);System.out.println(a.getX());Bb=newB();b.f(a);System.out.println(a.getX());}}答:810016.編寫一個類A,該類創建的對象可以調用方法f輸出英文字母表,然后再編寫一個該類的子類B,要求子類B必須繼承A類的方法f(不允許重寫),子類創建的對象不僅可以調用方法f輸出英文字母表,而且調用子類新增的方法g輸出希臘字母表。答:classA{intm;voidf(){for(m=65;m<91;m++)System.out.print((char)m+"");for(m=97;m<123;m++)System.out.print((char)m+"");System.out.println("");}}classBextendsA{inti;voidg(){for(i=913;i<930;i++)System.out.print((char)i+"");for(i=931;i<938;i++)System.out.print((char)i+"");for(i=945;i<962;i++)System.out.print((char)i+"");for(i=963;i<970;i++)System.out.print((char)i+"");System.out.println("");}}publicclassTest{publicstaticvoidmain(Stringargs[]){Bb=newB();System.out.println("我調用方法f輸出英文字母表:");b.f();System.out.println("我調用方法g輸出希臘字母表:");b.g();}}17.編寫一個異常類MyException,再編寫一個類Student,該類有一個產生異常的方法publicvoidspeak(intm)throwsMyException,要求參數m的值大于1000時,方法拋出一個MyException對象。最后編寫主類,在主類的main方法中用Student創建一個對象,讓該對象調用speak方法。答:classMyExceptionextendsException{Stringstr1;MyException(intm){str1=m+"出現錯誤可能造成的原因是取值大于1000";}publicvoidshowStr1(){System.out.println(str1);}}classStudent{publicvoidspeak(intm)throwsMyException{if(m>1000){MyExceptionexception=newMyException(m);throwexception;}elseSystem.out.println(m);}}publicclassTest{publicstaticvoidmain(Stringagrs[]){intm;Studentstu1=newStudent();m=987;try{stu1.speak(m);m=1234;stu1.speak(m);}catch(MyExceptione){e.showStr1();}}}18.編寫一個類,該類有一個方法publicintf(inta,intb),該方法返回a和b的最大公約數。然后再編寫一個該類的子類,要求子類重寫方法f,而且重寫的方法將返回a和b的最小公倍數。要求在重寫的方法的方法體中首先調用被隱藏的方法返回a和b的最大公約數m,然后將乘積(a*b)/m返回。要求在應用程序的主類中分別使用父類和子類創建對象,并分別調用方法f計算兩個正整數的最大公約數和最小公倍數。答:classA{publicintf(inta,intb){if(a<b){inttemp=0;temp=a;a=b;b=temp;}intr=a%b;while(r!=0){a=b;b=r;r=a%b;}returnb;}}classBextendsA{publicintf(inta,intb){intm;m=super.f(a,b);return(a*b)/m;}}publicclassTest{publicstaticvoidmain(Stringargs[]){Aa=newA();System.out.println("18和102的最大公約數是:"+a.f(18,102));Bb=newB();System.out.println("18和102的最小公倍數是:"+b.f(18,102));}}第6章時間、日期和數字1.用Data類不帶參數的構造方法創建日期,要求日期的輸出格式是:星期小時分秒。答:importjava.util.*;importjava.text.*;classTest{publicstaticvoidmain(Stringargs[]){Date時間=newDate();SimpleDateFormats=newSimpleDateFormat("EHH時mm分ss秒");System.out.println(s.format(時間));}}3.計算某年、某月、某日和某年、某月、某日之間的天數間隔。要求年、月、日通過main方法的參數傳遞到程序中。答:importjava.util.*;classTest{publicstaticvoidmain(Stringargs[]){Calendarc=Calendar.getInstance();c.set(2000,0,1);longtime1=c.getTimeInMillis();c.set(2008,7,8);longtime2=c.getTimeInMillis();longdayCous=(time2-time1)/(1000*60*60*24);System.out.println("2008年8月8日和2000年1月1日相隔"+dayCous+"天");}}5.使用BigInteger類計算1!+3!+5!+7!+…的前30項的和。答:importjava.math.*;publicclassTest{publicstaticvoidmain(Stringargs[]){BigIntegersum=newBigInteger("0"),jieCheng=newBigInteger("1"),ONE=newBigInteger("1"),i=ONE;intk=0;while(++k<=30){sum=sum.add(jieCheng);i=i.add(ONE);jieCheng=jieCheng.multiply(i);i=i.add(ONE);jieCheng=jieCheng.multiply(i);}System.out.println(sum);}}第7章AWT組件及事件處理6.編寫一個應用程序,有一個標題為“計算”的窗口,窗口的布局為FlowLayout布局。設計4個按鈕,分別命名為“加”、“差”、“積”、“除”,另外,窗口中還有3個文本框。單擊相應的按鈕,將兩個文本框的數字做運算,在第三個文本框中顯示結果。要求處理NumberFormatException。答:importjava.awt.*;importjava.awt.event.*;classCalculatedextendsFrameimplementsActionListener{TextFieldtext1,text2,text3;//3個文本框ButtonbuttonH,buttonC,buttonJ,buttonS;//4個按鈕Calculated(Strings){super(s);setLayout(newFlowLayout());//FlowLayout布局text1=newTextField(10);text2=newTextField(10);text3=newTextField(17);buttonH=newButton("加");buttonC=newButton("差");buttonJ=newButton("積");buttonS=newButton("除");add(text1);add(text2);add(text3);text3.setEditable(false);add(buttonH);add(buttonC);add(buttonJ);add(buttonS);buttonH.addActionListener(this);buttonC.addActionListener(this);buttonJ.addActionListener(this);buttonS.addActionListener(this);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});setBounds(100,100,160,180);setVisible(true);validate();}publicvoidactionPerformed(ActionEvente){doublenum1=0,num2=0,totle=0;try{num1=Double.parseDouble(text1.getText());num2=Double.parseDouble(text2.getText());if(e.getSource()==buttonH){totle=num1+num2;text3.setText("和"+totle);}elseif(e.getSource()==buttonC){totle=num1-num2;text3.setText("差"+totle);}elseif(e.getSource()==buttonJ){totle=num1*num2;text3.setText("積"+totle);}elseif(e.getSource()==buttonS){totle=num1/num2;text3.setText("商"+totle);}}catch(NumberFormatExceptionevent){text3.setText("請輸入數字字符!");}}}publicclassTest{publicstaticvoidmain(Stringargs[]){Calculatedcalc=newCalculated("計算");//標題為“計算”的窗口}}8.寫一個應用程序,要求編寫一個Panel的子類MyPanel,MyPanel中有一個文本框和一個按鈕,要求MyPanel的實例作為其按鈕的ActionEvent事件的監視器,當單擊按鈕時,程序獲取文本框中的文本,并將該文本作為按鈕的名稱。然后在編寫一個Frame的子類,即窗口。窗口的布局為BorderLayout布局。窗口中添加兩個MyPanel面板,分別添加到窗口的東部區域和西部區域。答:importjava.awt.*;importjava.awt.event.*;classMyPanelextendsPanelimplementsActionListener{Stringname;TextFieldtext;Buttonbutton;MyPanel(){text=newTextField(10);button=newButton("確定");add(text);add(button);button.addActionListener(this);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}}}publicvoidactionPerformed(ActionEvente){if(e.getSource()==button){name=text.getText();button.setLabel(name);}}}classMyFrameextendsFrame{MyPanelpanel1,panel2;MyFrame(){panel1=newMyPanel();panel2=newMyPanel();add(panel1,BorderLayout.EAST);add(panel2,BorderLayout.WEST);setBounds(100,100,400,100);setVisible(true);validate();}}publicclassTest{publicstaticvoidmain(Stringargs[]){MyFramewin=newMyFrame();}}9.參照例子7.18編寫一個應用程序,要求有一個畫布,在畫布上繪制一個矩形,用戶通過文本框輸入矩形的寬和高以及矩形左上角的位置坐標。答:importjava.awt.*;importjava.awt.event.*;classMycanvasextendsCanvas{intx,y,w,h;Mycanvas(){setBackground(Color.cyan);}publicvoidsetX(intx){this.x=x;}publicvoidsetY(inty){this.y=y;}publicvoidsetW(intw){this.w=w;}publicvoidsetH(inth){this.h=h;}publicvoidpaint(Graphicsg){g.drawRect(x,y,w,h);}}classWindowCanvasextendsFrameimplementsActionListener{Mycanvascanvas;TextFieldtext1,text2,text3,text4;Buttonbutton;WindowCanvas(){canvas=newMycanvas();text1=newTextField(4);text2=newTextField(4);text3=newTextField(5);text4=newTextField(5);PanelpNorth=newPanel(),pSouth=newPanel();button=newButton("確定");button.addActionListener(this);pNorth.add(newLabel("矩形的寬:"));pNorth.add(text3);pNorth.add(newLabel("矩形的高:"));pNorth.add(text4);pSouth.add(newLabel("左上角位置坐標:"));pSouth.add(text1);pSouth.add(text2);pSouth.add(button);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});add(canvas,BorderLayout.CENTER);add(pNorth,BorderLayout.NORTH);add(pSouth,BorderLayout.SOUTH);setBounds(100,100,500,500);setVisible(true);validate();}publicvoidactionPerformed(ActionEvente){intx,y,w,h;try{x=Integer.parseInt(text1.getText());y=Integer.parseInt(text2.getText());w=Integer.parseInt(text3.getText());h=Integer.parseInt(text4.getText());canvas.setX(x);canvas.setY(y);canvas.setW(w);canvas.setH(h);canvas.repaint();}catch(NumberFormatExceptionee){x=0;y=0;w=0;h=0;}}}publicclassTest{publicstaticvoidmain(Stringargs[]){newWindowCanvas();}}10.編寫應用程序,有一個窗口對象,該窗口取它的默認布局:BorderLayout布局,北面添加一個List組件,該組件有四個商品名稱的選項。中心添加一個文本區,當選擇List組件中的某個選項后,文本區顯示對該商品的價格和產地:當雙擊List組件中的某個選項后,文本區顯示該商品的詳細廣告。答:importjava.awt.*;importjava.awt.event.*;classWindowGoodsextendsFrameimplementsActionListener,ItemListener{Strings[]={"產地:北京","產地:上海","產地:沈陽","產地:廣東"};Stringp[]={"價格:3200","價格:158","價格:13.2","價格:320/打"};Stringa[]={"本商品****","本商品*****","本商品******","本商品*******"};Listlist;TextAreatext;WindowGoods(){list=newList(3,false);text=newTextArea(6,20);text.setEditable(false);list.add("商品1");list.add("商品2");list.add("商品3");list.add("商品4");add(list,BorderLayout.NORTH);add(text,BorderLayout.CENTER);list.addItemListener(this);list.addActionListener(this);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});setBounds(100,100,300,300);setVisible(true);validate();}publicvoiditemStateChanged(ItemEvente){if(e.getItemSelectable()==list){intm=list.getSelectedIndex();text.setText(p[m]+'\n'+s[m]);}}publicvoidactionPerformed(ActionEvente){intn=list.getSelectedIndex();text.setText(a[n]);}}publicclassTest{publicstaticvoidmain(Stringargs[]){newWindowGoods();}}Java多線程機制11.參照例子9.11編寫一個應用程序,有兩個線程,一個負責模仿垂直上拋運動,另一個模仿45°的拋體運動。答:importjava.awt.*;importjava.awt.event.*;publicclassTest{publicstaticvoidmain(Stringargs[]){MyFrameframe=newMyFrame();frame.setBounds(10,10,500,500);frame.setVisible(true);frame.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});}}classMyFrameextendsFrameimplementsRunnable{Thread紅色球,藍色球;MyCanvasred,blue;doublet=0;MyFrame(){紅色球=newThread(this);藍色球=newThread(this);red=newMyCanvas(Color.red);blue=newMyCanvas(Color.blue);setLayout(null);add(red);add(blue);red.setLocation(60,100);blue.setLocation(60,100);紅色球.start();藍色球.start();}publicvoidrun(){while(true){t=t+0.2;intv0=20;if(t>20)t=0;if(Thread.currentThread()==紅色球){intx=60;inth=300-((int)(v0*t-1.0/2*t*t*3.8)+60);red.setLocation(x,h);try{紅色球.sleep(50);}catch(InterruptedExceptione){}}elseif(Thread.currentThread()==藍色球){intx=60+(int)(26*t);inth=300-((int)(v0*t-1.0/2*t*t*3.8)+60);blue.setLocation(x,h);try{藍色球.sleep(50);}catch(InterruptedExceptione){}}}}}classMyCanvasextendsCanvas{Colorc;MyCanvas(Colorc){setSize(20,20);this.c=c;}publicvoidpaint(Graphicsg){g.setColor(c);g.fillOval(0,0,20,20);}}12.參照例子9.14,模擬3個人排隊買票,張某、李某和趙某買電影票,售票員只有3張五元的錢,電影票五元一張。張某拿二十元一張的人民幣排在李某的前面買票,李某排在趙某的前面拿一張十元的人民幣買票,趙某拿一張五元的人民幣買票。答:importjava.awt.*;importjava.awt.event.*;publicclassTest{publicstaticvoidmain(Stringargs[]){newMyFrame();}}classMyFrameextendsFrameimplementsRunnable,ActionListener{售票員王小姐;Thread張某,李某,趙某;staticTextAreatext;Buttonstart=newButton("排隊買票");MyFrame(){王小姐=new售票員();//只有3張五元錢電影票五元一張張某=newThread(this);//二十元排在最前面李某=newThread(this);//十元排在中間趙某=newThread(this);//五元排在最后text=newTextArea(10,30);start.addActionListener(this);add(text,BorderLayout.CENTER);add(start,BorderLayout.NORTH);setVisible(true);setSize(360,300);validate();addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});}publicvoidactionPerformed(ActionEvente){try{張某.start();李某.start();趙某.start();}catch(Exceptionexp){}}publicvoidrun(){if(Thread.currentThread()==張某){王小姐.售票規則(20);}elseif(Thread.currentThread()==李某){王小姐.售票規則(10);}elseif(Thread.currentThread()==趙某){王小姐.售票規則(5);}}}class售票員{int五元錢個數=3,十元錢個數=0,二十元錢個數=0;Strings=null;publicsynchronizedvoid售票規則(intmoney){if(money==5){五元錢個數=五元錢個數+1;s="給您入場卷您的錢正好";MyFrame.text.append("\n"+s);}elseif(money==10){whil
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南省瀘西縣瀘源普通高級中學2025屆高三下學期第二次高考模擬英語試題含解析
- 遼寧省沈陽市沈北新區重點達標名校2025屆初三下學期第二次模擬考試(期中)數學試題含解析
- 浙江省池州市2024-2025學年數學三下期末復習檢測試題含解析
- 陜西省咸陽市秦嶺中學2025年第二學期期末學業質量陽光指標調研卷初三生物試題含解析
- FIDIC電力工程施工合同版
- 江蘇省徐州市睢寧縣2024-2025學年三年級數學第二學期期末質量跟蹤監視模擬試題含解析
- 設備買賣及所有權轉移合同
- 餐廳檔口租賃合同模板
- 手機SIM卡購銷合同
- 停車庫鋼結構施工合同協議
- 期中(試題)-2024-2025學年人教精通版(2024)英語三年級下冊
- 2025-2030中國煤焦油雜酚油行業市場發展趨勢與前景展望戰略研究報告
- 防洪防汛安全教育知識培訓
- 2020-2025年中國遼寧省風力發電行業發展潛力分析及投資方向研究報告
- 規模養殖場十項管理制度
- 2025中考英語熱點話題閱讀《哪吒2魔童鬧海》
- 勞務派遣勞務外包項目方案投標文件(技術方案)
- 瘧疾2025培訓課件
- 流行性感冒診療方案(2025版)解讀課件
- 定額〔2025〕1號文-關于發布2018版電力建設工程概預算定額2024年度價格水平調整的通知
- 《思想政治教育方法論》考研(第3版)鄭永廷配套考試題庫及答案【含名校真題、典型題】
評論
0/150
提交評論