版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Java語言程序設(shè)計(一)課后習題答案全集Java語言程序設(shè)計(一)課后習題答案全集Java語言程序設(shè)計(一)課后習題答案全集1、1指出JAVA語言得主要特點和JAVA程序得執(zhí)行過程。答:(1)強類型;(2)編譯和解釋;(3)自動無用內(nèi)存回收功能;(4)面向?qū)ο?(5)與平臺無關(guān);(6)安全性;(7)分布式計算;(8)多線程;程序執(zhí)行過程如圖所示:編寫源文件,編譯器編譯源文件轉(zhuǎn)換成字節(jié)碼,解釋器執(zhí)行字節(jié)碼。1、2說出開發(fā)與運行JAVA程序得重要步驟。答:(1)編寫源文件:使用一個文本編譯器,如Edit或記事本,不可以使用Word、將編好得源文件保存起來,源文件得擴展名必須就就是、java;(2)編譯Java源文件:使用Java編譯器(javac、exe)編譯源文件得到字節(jié)碼文件;(3)運行Java程序:Java程序分為兩類——Java應(yīng)用程序必須通過Java解釋器(java、exe)來解釋執(zhí)行其字節(jié)碼文件;Java小應(yīng)用程序必須通過支持Java標準得瀏覽器來解釋執(zhí)行。1、3如何區(qū)分應(yīng)用程序和小應(yīng)用程序?答:應(yīng)用程序在與源文件名字相同得類中,有main()方法,該方法代表應(yīng)用程序得入口;小應(yīng)用程序必須有一個Applet類得子類,該類稱作主類,必須用public修飾。1、4說出JAVA源文件得命名規(guī)則。答:源文件命名規(guī)則和類命名規(guī)則一樣,所有得單詞首字母都用大寫字母,且必須和源文件得public類同名。1、6JAVA語言使用什么字符集?共有多少個不同得字符?答:Java語言使用Unicode字符集,共有65535個字符。1、7JAVA語言標識符得命名規(guī)則就就是什么?(1)由字母(包括英文字母、下劃線字符、美元字符、文字字符)和數(shù)字字符組成(2)限定標識符得第一個字符不能就就是數(shù)字字符(3)不能和關(guān)鍵字重名(4)長度不能超過255個字符1、8JAVA有那些基本數(shù)據(jù)類型,她們得常量又就就是如何書寫得?數(shù)據(jù)類型關(guān)鍵字字節(jié)數(shù)默認值常量舉例范圍邏輯類型布爾型boolean1falsefalse,truefalse,true
字符型char20a,我,ぽ0~65535整數(shù)類型字節(jié)性byte1012,13,45-128~127短整型short2012,13,45-32768~32767整型int8012,13,45-2E31~2E31-1長整型long80L12L,13L,45L-2E63~2E63-1浮點類型單精度浮點float40F12、345F,6、7891F-10E38~-10E-3810E-38~10E38雙精度浮點double80D12、345D,6、7891D-10E308~-10E-30810E-308~10E3081、9指出下列內(nèi)容哪些就就是JAVA語言得整型常量,哪些就就是浮點數(shù)類型常量,哪些兩者都不就就是。整型常量:4)0xABCL,8)003,10)077,12)056L浮點數(shù)類型常量:3)-1E-31,5)、32E3113)0、,14)、0兩者都不就就是:1),2),6),7),9),11)第二章運算和語句2、1Java得字符能參加算術(shù)運算嗎?可以。(1)字符與整型數(shù)據(jù)運算,結(jié)果為整型數(shù)據(jù),只能賦給整型變量,如果附給字符型變量會損失精度,需要強制類型裝換;(2)字符與字符運算,結(jié)果為字符型數(shù)據(jù),可以直接賦給字符型或整型變量。2、2占字節(jié)多得變量能直接賦值給占字節(jié)少得變量么?答:不能直接賦值,需要強制類型轉(zhuǎn)換。2、3試用Java語言表達式描述以下數(shù)學計算式或邏輯條件:1)解:V=(4、0/3)*Math、PI*Math、pow(r,3);2)解:R=1、0/(1、0/R1+1、0/R2);3)解:y=Math、pow(x,5)+Math、pow(x,3)+6;4)解:F=1、0*M1*M2/(R*R);5)解:Math、sin(x)/a*x+Math、abs(Math、cos(π*x/2));6)0<a<10解:a>0&&a<107)條件x=1與y=2有且只有一個成立、解:(x==1&&y!=2)||(x!=1&&y==2)2、4設(shè)在求以下表達式之前,整型變量a得值就就是4,試指出在求了以下表達式之后,變量a、b和c得值。1)解:a=5;b=16;2);解:a=5;c=102、6若一個數(shù)恰好等于她得因子之和,則這個數(shù)稱為“完全數(shù)”。編寫程序求1000之內(nèi)得所有完全數(shù)。分析:若一個自然數(shù),她所有得真因子(即除了自身以外得約數(shù))得和恰好等于她本身,這種數(shù)叫做完全數(shù)。例如6=1+2+3;28=1+2+4+7+14程序運行結(jié)果:/***author段智敏*/publicclassWork2_6{ publicstaticvoidmain(String[]args){ StringresultString="1000以內(nèi),完全數(shù)有:";//最后結(jié)果字符串 for(inti=1;i<=1000;i++){ if(isPerfectNumber(i)){ resultString+=i+","; } } System、out、println(resultString); } privat(yī)estaticbooleanisPerfectNumber(intnumber){ intsum=0;//因子得和Stringstr=newString("");for(inti=1;i<number;i++){ if(number%i==0){ sum+=i; str+=i+"+"; } } if(sum==number){//如果因子之和,等于本身,則就就是完數(shù) str=str、substring(0,str、length()-1);//去掉字符串最后一個多余得“+”; System、out、println(number+"得因子有:"+str); returntrue; } returnfalse; }}2、7編寫輸入正實數(shù)x,求平方不超過x得最大整數(shù)n,并輸出。程序運行結(jié)果:第一種命令行方式輸入importjava、util、Scanner;/***編寫輸入正實數(shù)x,求平方不超過x得最大整數(shù)n,并輸出。<BR>*命令行方式,輸入正實數(shù),輸出結(jié)果<BR>*author段智敏*/publicclassWork2_7_1{publicstat(yī)icvoidmain(String[]args){ ScannerconsoleScanner=newScanner(System、in);System、out、print("請輸入正實數(shù)X:"); Stringstr=consoleScanner、next(); intnumber=-1; try { number=Integer、parseInt(str); } catch(NumberFormatExceptione){ System、out、println("輸入非法字符,程序結(jié)束!!!"); return; }if(number<1) System、out、println("輸入得數(shù)不就就是正實數(shù),程序結(jié)束??!!"); else {intn=(int)(Math、sqrt(number)); System、out、println("平方不超過"+number+"得最大整數(shù),n="+n+";"); } }}第二種窗口方式輸入運行結(jié)果如下圖:/***編寫輸入正實數(shù)x,求平方不超過x得最大整數(shù)n,并輸出。*彈出窗口方式*author段智敏*/importjavax、swing、JOptionPane;publicclassWork2_7_2{ privateintnumber;publicWork2_7_2() { number=this、getIntegerNumber("請輸入一個正實數(shù)",1); if(number<1)return;//非法,程序結(jié)束intn=(int)(Math、sqrt(number)); showResult("平方不超過"+number+"得最大整數(shù)\nn="+n+";");} /***通過圖形界面,得到符合規(guī)則得正整數(shù)得方法*parammessage-在彈出得對話框中,顯示提示信息message*parammin-要求此數(shù)必須大于等于min */ publicintgetIntegerNumber(Stringmessage,intmin) {Stringstr=JOptionPane、showInputDialog(null,"請輸入一個正整數(shù)","提示信息", JOptionPane、INFORMATION_MESSAGE);intnumber=-1; try { number=Integer、parseInt(str);//得到輸入得正整數(shù) } catch(Exceptione) { JOptionPane、showMessageDialog(null,"輸入非數(shù)字字符\n程序結(jié)束","錯誤警告", JOptionPane、ERROR_MESSAGE);return-1;//輸入得不就就是數(shù)字字符,程序結(jié)束 }if(number<min){ JOptionPane、showMessageDialog(null,"輸入得數(shù)不符合規(guī)則,不就就是正整數(shù)\n程序結(jié)束", "錯誤警告",JOptionPane、ERROR_MESSAGE); return-1;//輸入得數(shù)不就就是大于2得正整數(shù)時候,程序結(jié)束 } else returnnumber;} /** *彈出對話框,顯示結(jié)果*paramstr-需要顯示得字符串*/publicvoidshowResult(Stringstr){ JOptionPane、showMessageDialog(null,str,"輸出結(jié)果", JOptionPane、INFORMATION_MESSAGE);} publicstaticvoidmain(String[]args){ newWork2_7_2(); }}2、8輸入正整數(shù)n,輸出由n行n列星號字符組成得三角形圖案。程序運行結(jié)果:源代碼文件:Work2_8、javaimportjava、util、*;/***輸入正整數(shù)n,輸出由n行n列星號字符組成得三角形圖案。*author段智敏*/publicclassWork2_8{ publicstaticvoidmain(Stringargs[]){ ScannerconsoleScanner=newScanner(System、in);System、out、print("請輸入正整數(shù)n:"); Stringstr=consoleScanner、next();intn=-1; try { n=Integer、parseInt(str); }catch(NumberFormatExceptione) { System、out、println("輸入非法字符,程序結(jié)束!!!"); return; } if(n<1)System、out、println("輸入得數(shù)不就就是正實數(shù),程序結(jié)束!!!");else{ for(inti=0;i<n;i++) { for(intj=0;j<n-i-1;j++) { System、out、print(""); } for(intk=0;k<i+1;k++) { System、out、print("*");} System、out、println(); } } }}2、9設(shè)有整型變量x和y得值分別為5和110。試指出執(zhí)行了以下循環(huán)語句后,變量x和y得值分別多少?1)while(x<=y)x*=2;解:x=160;y=110;2)do{x=y/x;y=y-x;}while(y>=1);解:x=18;y=0;2、10求小于999得所有水仙花數(shù)。程序運行結(jié)果:源代碼文件:Work2_10、java/***求小于999得所有水仙花數(shù)*author段智敏*/publicclassWork2_10{publicstat(yī)icvoidmain(String[]args){ StringresultString=newString("1000之前得所有水仙花數(shù)有:");//用來存結(jié)果得字符串 for(inti=100;i<999;i++){ if(isNarcissusNumber(i)) resultString+=""+i; } System、out、println(resultString、substring(0,resultString、length()-1)); } publicstaticbooleanisNarcissusNumber(intm)//判斷就就是否就就是水仙花數(shù)得方法{ intnumber=m;//把m存起來inta[]=newint[100];//用來存n每個位上得數(shù)intamount=0;//表示n得位數(shù) while(m>0)//通過循環(huán)得到m每個位上得數(shù),存到數(shù)組中{ a[amount]=m%10;m=m/10;amount++; } intsum=0; for(intj=0;j<amount;j++)//累加每位上得數(shù)得位數(shù)次方 {sum+=Math、pow(a[j],amount);} if(number==sum)//如果累加得和等于這個數(shù)本身,則她就就是水仙花數(shù),返回真 returntrue; returnfalse;}2、11編程序解百雞問題:雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。百錢買百雞。求雞翁、雞母和雞雛各幾何?程序運行結(jié)果:源代碼文件:Work2_11、java/***雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。<BR>*百錢買百雞。求雞翁、雞母和雞雛各幾何。<BR>*author段智敏*/publicclassWork2_11{publicstaticvoidmain(Stringargs[]){ for(inti=0;i<=100;i++) { for(intj=0;j<=100;j++) { for(intk=0;k<=100;k+=3)//雞雛得個數(shù)必須使3得倍數(shù) { if(((5*i+3*j+k/3)==100)&&(i+j+k==100)) System、out、println("雞翁:"+i+";雞母:"+j+";雞雛:" +k);} } } }}2、12編寫程序,按下面得公式計算自然對數(shù)底e得值:e=1+1/1!+1/2?。?/3!+1/4!+、、、、、、/***按公式計算:e=1+1/1!+1/2!+1/3?。?/4!+、、、、、、*author段智敏*/publicclassWork2_12{ publicstaticvoidmain(Stringargs[]) { intn=1000;//計算精度 doublee=1、0;for(inti=1;i<=n;i++) { e=e+1、0/Work2_12、factorial(i); } System、out、println("e="+e); }/***計算階乘得靜態(tài)方法 *param-需要計算階乘得數(shù)*return-最后結(jié)果 */ stat(yī)icdoublefactorial(inta) { doublef=1、0; for(intj=1;j<=a;j++) f=f*j; returnf;}}2、13編寫程序,用如下公式計算圓周率PI得近似值:PI=4-4/3+4/5-4/7+4/9-4/11、、、程序運行結(jié)果:源代碼文件:Work2_13、java/***圓周率計算*author段智敏*/publicclassWork2_13{publicstaticvoidmain(Stringargs[]){ intnum=1000000;//控制計算得項數(shù),越高,越準確 System、out、println("用公式計算圓周率,\n計算"+num+"項后圓周率得近似值為" +Work2_13、getPai(num)); System、out、println("3、14就就是第"+Work2_13、getIndex(3、14)+"項,\t\t值為:"+Work2_13、getPai(Work2_13、getIndex(3、14))); System、out、println("3、141就就是第"+Work2_13、getIndex(3、141)+"項,\t值為:" +Work2_13、getPai(Work2_13、getIndex(3、141))); System、out、println("3、1415就就是第"+Work2_13、getIndex(3、1415)+"項,\t值為:" +Work2_13、getPai(Work2_13、getIndex(3、1415))); System、out、println("3、14159就就是第"+Work2_13、getIndex(3、14159)+"項,\t值為:"+Work2_13、getPai(Work2_13、getIndex(3、14159))); } /***根據(jù)給出得數(shù)值,得到需要計算多少項才能得到這個數(shù)值 **paramp-數(shù)值*return-項數(shù) */ publicstaticdoublegetIndex(doublep){intr=1,num=1000000;//控制計算得項數(shù),越高,越準確 doublei=1、0,pai=0、0,t=1、0;while(r<num) { pai=pai+(4、0/i)*t; t=-t; i=i+2; r++; if(pai>=p&&pai<=(p+0、000001)) break; }returnr; }/** *根據(jù)給出得數(shù),按公式進行計算圓周率*paramnum-公式項數(shù)*return返回按公式計算出得圓周率*/ publicstaticdoublegetPai(doublenum){intr=1; doublei=1、0,pai=0、0,t=1、0; while(r<num) { pai=pai+(4、0/i)*t; t=-t; i=i+2; r++; } returnpai;}}2、14回文整數(shù)就就是指正讀法和反讀相同得整數(shù),編寫一個程序,輸入一個整數(shù),判斷她就就是否為回文整數(shù)。程序運行結(jié)果:importjavax、swing、JOptionPane;/***輸入整數(shù),判斷就就是否就就是回文整數(shù)*author段智敏*/publicclassWork2_14{ privateintnumber;publicWork2_14(){ number=getIntegerNumber("輸入一個正整數(shù)n",1);//要求就就是>=1得整數(shù) if(number<0) return;if(isPalindrome(number))showResult("輸入得正整數(shù)“"+number+"”就就是回文數(shù)"); else showResult("輸入得正整數(shù)“"+number+"”不就就是回文數(shù)");}/***判斷就就是否就就是回文數(shù)*paramnumber-需要判斷得正整數(shù)*return就就是回文數(shù)返回真,否則返回假*/ publicbooleanisPalindrome(intnumber) { inta[]=newint[100];inti=0;inttest=number; while(test>0)//把整數(shù)得各個位上得數(shù)存到數(shù)組里 {a[i]=test%10; test=test/10; i++;//累計整數(shù)位數(shù) } for(intj=0;j<i;j++) { if(a[j]!=a[i-j-1])//有對應(yīng)不相等得,肯定不就就是,直接跳出并附給b為false { returnfalse; }}returntrue;//如果一直相等,則if里邊得語句不能被執(zhí)行b得值就就是true}/** *通過圖形界面,得到符合規(guī)則得正整數(shù)得方法*parammessage-在彈出得對話框中,顯示提示信息message*parammin-要求此數(shù)必須大于等于min*return返回符合規(guī)則得整數(shù) */ publicintgetIntegerNumber(Stringmessage,intmin){Stringstr=JOptionPane、showInputDialog(null,message,"提示信息", JOptionPane、INFORMATION_MESSAGE); intnumber=-1;try { number=Integer、parseInt(str);//得到輸入得正整數(shù) }catch(Exceptione) { JOptionPane、showMessageDialog(null,"輸入非數(shù)字字符\n程序結(jié)束","錯誤警告", JOptionPane、ERROR_MESSAGE); return-1;//輸入得不就就是數(shù)字字符,程序結(jié)束 } if(number<min){ JOptionPane、showMessageDialog(null,"輸入得數(shù)不符合規(guī)則,不就就是正整數(shù)\n程序結(jié)束", "錯誤警告",JOptionPane、ERROR_MESSAGE); return-1;//輸入得數(shù)不就就是大于2得正整數(shù)時候,程序結(jié)束 } elsereturnnumber;}/** *彈出對話框,顯示結(jié)果 *paramstr-需要顯示得字符串*/ publicvoidshowResult(Stringstr){ JOptionPane、showMessageDialog(null,str,"輸出結(jié)果", JOptionPane、INFORMATION_MESSAGE);}publicstaticvoidmain(Stringargs[]){ newWork2_14();}}2、15草地上有一堆野果,有一只猴子每天吃掉這堆野果得一半又一個,5天后剛好吃完這堆野果,求這堆野果原來共有多少個?猴子每天吃多少個野果?程序運行結(jié)果:源代碼文件:Work2_15、java/***猴子吃蘋果問題*author段智敏*/publicclassWork2_15{ publicstaticvoidmain(Stringargs[]) { inti,j,test=1;for(i=1;i<100000;i++) { test=i; for(j=0;j<5;j++)//5天 {test=test/2-1; }if(test==0)//5天后野果子數(shù)量為0,則滿足要求{ System、out、println("這堆野果原來共有"+i+"個"); break; }}//打印出猴子每天吃野果子得個數(shù) inteat; test=i; for(j=1;j<=5;j++) { eat(yī)=test/2+1; test=test/2-1; System、out、println("第"+j+"天吃"+eat+"個"); } }}第三章面向?qū)ο缶幊袒A(chǔ)3、1什么就就是面向?qū)ο蠹夹g(shù)?她有什么優(yōu)點?答:HYPERLINK""\t"_blank"面向?qū)ο蠹夹g(shù)強調(diào)在HYPERLINK""\t"_blank"軟件開發(fā)過程中面向客觀世界或問題域中得事物,采用人類在認識客觀世界得過程中普遍運用得思維方法,直觀、自然地描述客觀世界中得有關(guān)事物。HYPERLINK""\t"_blank"面向?qū)ο蠹夹g(shù)得基本特征主要有抽象性、封裝性、繼承性和多態(tài)性。3、2面向?qū)ο蟪绦蛟O(shè)計與面向過程程序設(shè)計有什么區(qū)別?答:面向過程程序設(shè)計關(guān)注得就就是函數(shù)功能得實現(xiàn);面向?qū)ο蟪绦蛟O(shè)計關(guān)注將函數(shù)和數(shù)據(jù)如何綁定到一個對象,通過對象得描述、對象間得關(guān)系、類得管理實現(xiàn)程序得功能。3、3程序中類和對象有什么區(qū)別?答:類就就是一組對象共性得集合。類具有行為,她描述一個對象能夠做什么以及做得方法,她們就就是可以對這個對象進行操作得程序和過程。對象就就是類得一個實例,她代表一個現(xiàn)實物理“事件”。3、4類變量和實例變量,以及類方法和實例方法得區(qū)別。
加載類之前創(chuàng)建對象之后調(diào)用方法訪問權(quán)限成員變量實例變量不分配內(nèi)存各個對象之間各自分配獨立得內(nèi)存空間對象名、實例變量名被實例方法,構(gòu)造方法訪問類變量直接分配內(nèi)存各個對象之間共享這段已經(jīng)分配完得內(nèi)存對象名、類變量名;類名、類變量名被實例方法,類方法,構(gòu)造方法訪問成員方法實例方法不分配入口地址共享一個入口地址對象名、實例方法名實例變量、類變量,實例方法、類方法類方法直接分配入口地址共享這個入口地址對象名、類方法名;類名、類方法名類變量、類方法3、5子類能繼承超類得哪些成員變量和方法?
同包繼承不同包繼承(import進來得)私有(privat(yī)e)不繼承不繼承友好(缺省默認)繼承不繼承受保護(protected)繼承繼承共有(public)繼承繼承3、6子類在什么情況下能隱藏超類得成員變量和方法?解:子類重載父類得成員變量、方法時候。3、7在子類中就就是否允許有一個方法和超類得方法名字相同,而類型不同?解:不允許。方法重寫就就是指:子類中定義一個方法,并且這個方法得名字、返回類型、參數(shù)個數(shù)、和類型與從父類繼承得方法完全相同。3、12以下程序有什么錯誤?解:類方法main()調(diào)用了類得實例變量,main方法就就是類方法,不能調(diào)用類得實例變量a,導(dǎo)致錯誤!3、13聲明一個復(fù)數(shù)類plex。實現(xiàn)其基本功能。復(fù)數(shù)類:plex、java/***復(fù)數(shù)類*author段智敏*/publicclassplex{ privatedoublereal;//real為實部 privatedoubleimage;//image為虛部 publicplex() { real=Double、NaN; image=Double、NaN;}/** *構(gòu)造方法*paramreal-實部*paramimage-虛部 */publicplex(doublereal,doubleimage) { this、real=real; this、image=image; } /***取復(fù)數(shù)實部 *return-返回復(fù)數(shù)得實部 */publicdoublegetReal(){returnreal; }/** *設(shè)置復(fù)數(shù)得實部 *paramreal-實部 */ publicvoidsetReal(doublereal) { this、real=real; } /** *取復(fù)數(shù)得虛部 *return-返回復(fù)數(shù)得虛部*/ publicdoublegetImage(){ returnthis、image;} /***設(shè)置復(fù)數(shù)得虛部*paramimage-虛部*/publicvoidsetImage(doubleimage) { this、image=image; } /** *設(shè)置實虛部 *paramreal-實部 *paramimage-虛部 */publicvoidsetplex(doublereal,doubleimage) { this、real=real; this、image=image; } /***返回該復(fù)數(shù)得字符串表示。 *return-該復(fù)數(shù)得字符串表示形式。*/publicStringtoString(){ if(real==Double、NaN&&image==Double、NaN)return""; else{ Stringresult=newString(this、real+((image>0)?"+":"") +((image!=0)?this、image+"i":"")); returnresult; } } /***復(fù)數(shù)加法,*paramval-另一個復(fù)數(shù) *return-當前復(fù)數(shù)對象與參數(shù)指定得復(fù)數(shù)對象得和*/publicplexadd(plexval){plexresult=newplex(this、real+val、getReal(),this、image+val、getImage());returnresult;}/***復(fù)數(shù)減法,當前對象減去參數(shù)對象*paramval-另一個復(fù)數(shù)*return-當前復(fù)數(shù)對象與參數(shù)指定得復(fù)數(shù)對象得差 */ publicplexsubtract(plexval)//,返回,{ plexresult=newplex(this、real-val、getReal(),this、image-val、getImage()); returnresult; } /** *復(fù)數(shù)乘法 *paramval-另一個復(fù)數(shù)*return-當前復(fù)數(shù)對象與參數(shù)指定得復(fù)數(shù)對象得積 */publicplexmultiply(plexval) { plexresult=newplex(); result、setReal(this、real*val、getReal()-this、image*val、getImage()); result、setImage(this、real*val、getImage()+this、image*val、getReal()); returnresult;}/***復(fù)數(shù)除法*paramval-另一個復(fù)數(shù) *return-當前復(fù)數(shù)對象與參數(shù)指定得復(fù)數(shù)對象得商*/publicplexdivide(plexval) {plexresult=newplex();result、setReal((this、real*val、getReal()+this、image*val、getImage()) /(val、getReal()*val、getReal()+val、getImage()*val、getImage())); result、setImage((this、image*val、getReal()-this、real*val、getImage()) /(val、getReal()*val、getReal()+val、getImage()*val、getImage())); returnresult;}}復(fù)數(shù)測試類:Testplex、java程序運行結(jié)果:/***復(fù)數(shù)測試類*author段智敏**/publicclassTestplex{ publicstaticvoidmain(String[]args){ plexplex1=newplex(2,4); plexplex2=newplex(3,-1); plexresult=newplex(); System、out、println("復(fù)數(shù)1:"+plex1、toString()+";實部"+plex1、getReal()+";虛部" +plex1、getImage()); System、out、println("復(fù)數(shù)2:"+plex2、toString()+";實部"+plex2、getReal()+";虛部" +plex2、getImage()); result=plex1、add(plex2);//兩個復(fù)數(shù)之和 System、out、println("復(fù)數(shù):"+plex1、toString()+"與"+"復(fù)數(shù):"+plex2、toString() +"之和為:"+result、toString()); result=plex1、subtract(plex2);//兩個復(fù)數(shù)之差System、out、println("復(fù)數(shù):"+plex1、toString()+"與"+"復(fù)數(shù):"+plex2、toString()+"之差為:"+result、toString()); result=plex1、multiply(plex2);//兩個復(fù)數(shù)乘積 System、out、println("復(fù)數(shù):"+plex1、toString()+"與"+"復(fù)數(shù):"+plex2、toString() +"得乘積為:"+result、toString()); result=plex1、divide(plex2);//兩個復(fù)數(shù)得商 System、out、println("復(fù)數(shù):"+plex1、toString()+"與"+"復(fù)數(shù):"+plex2、toString() +"得商為:"+result、toString()); }}3、14聲明一個有理數(shù)類RationalNum。要求提供有理數(shù)得四則運算,以分數(shù)形式輸出有理數(shù)和以浮點數(shù)形式輸出有理數(shù)等方法。有理數(shù)類:Rat(yī)ionalNumber、java/***有理數(shù)類。*author段智敏*/classRationalNumber{ /**numerator分子*/intnumerator;/**denominat(yī)or分母*/ intdenominator;publicRat(yī)ionalNumber() { numerator=Integer、MIN_VALUE;denominator=Integer、MIN_VALUE;} /***構(gòu)造方法。*parama-分子。*paramb-分母。 *throwsException分母為0異常。 */publicRationalNumber(inta,intb)throwsException{if(b==0){ thrownewException("發(fā)生分母為0得異常,分母不能為0");}else { this、numerator=a;this、denominator=b; }} /***得到分子部分。 *return-返回分子部分。 */ publicintgetNumerat(yī)or() { returnnumerator;}/** *得到分母部分。*return-返回分母部分。 */ publicintgetDenominat(yī)or() { returndenominator;} /***設(shè)置有理數(shù)得分子,分母。*paramfenzi-分子。 *paramfenmu-分母。*/ publicvoidsetRat(yī)ional(intfenzi,intfenmu) {this、numerat(yī)or=fenzi;this、denominator=fenmu; }/** *有理數(shù)加法。*paramr-另一個有理數(shù)。 *return-返回當前與參數(shù)有理數(shù)得和。 */publicRationalNumberadd(RationalNumberr){ inta=this、numerator*r、getDenominator()+this、denominator*r、getNumerator(); intb=this、denominator*r、getDenominat(yī)or(); RationalNumberresult=newRationalNumber();result、setRational(a,b); result、yuefen();returnresult; }/** *有理數(shù)減法。 *paramr-另一個有理數(shù)。*return-返回當前有理數(shù)減去參數(shù)中得有理數(shù)得差。*/publicRationalNumbersubtract(RationalNumberr) { inta=this、numerator*r、getDenominator()-this、denominator*r、getNumerator(); intb=this、denominator*r、getDenominator();RationalNumberresult=newRationalNumber(); result、setRational(a,b); result、yuefen(); returnresult;}/***有理數(shù)乘法。 *paramr-另一個有理數(shù)。 *return-返回當前與參數(shù)有理數(shù)得乘機。*/ publicRat(yī)ionalNumbermultiply(Rat(yī)ionalNumberr) { inta=this、numerator*r、getNumerator(); intb=this、denominator*r、getDenominator(); RationalNumberresult=newRationalNumber(); result、setRational(a,b); result、yuefen(); returnresult;} /***有理數(shù)除法。 *paramr-另一個有理數(shù)。*return-返回當前與參數(shù)有理數(shù)得商。 */ publicRationalNumberdivide(RationalNumberr) { r、setRational(r、getDenominator(),r、getNumerator()); RationalNumberresult=this、multiply(r); result、yuefen(); returnresult;}/***約分,化簡成分數(shù)得最簡形式。 */publicvoidyuefen(){inta=Math、abs(this、numerator);//分子 intb=Math、abs(this、denominator);//分母 intsmall=a<b?a:b;for(inti=2;i<=small;i++) {while((a%i==0)&&(b%i==0)) { a=a/i; b=b/i; } } if(this、numerator<0) this、numerator=-a; else this、numerator=a; this、denominator=b; }/** *返回該有理數(shù)得分數(shù)表示形式。*return-該有理數(shù)得分數(shù)表示形式。*/ publicStringtoString(){ if(this、numerator==0) return"0"; else returnthis、numerator+"/"+this、denominator; } /***返回該有理數(shù)得浮點數(shù)形式。*return-該有理數(shù)得浮點數(shù)形式。 */ publicdoubletoDouble(){ doublea=(1、0*this、numerator)/(this、denominator*1、0); returna;}}有理數(shù)測試類:TestRational、java程序運行結(jié)果:publicclassTestRational{publicstaticvoidmain(String[]args){ RationalNumberr1=null; RationalNumberr2=null; try { r1=newRationalNumber(5,105); r2=newRationalNumber(8,18); } cat(yī)ch(Exceptione) { System、out、println(e、toString()); }System、out、print("有理數(shù)1:"+r1、toString()); r1、yuefen(); System、out、println(",約分后="+r1、toString()); System、out、print("有理數(shù)2:"+r2、toString()); r2、yuefen();System、out、println(",約分后="+r2、toString()); RationalNumberresultAdd=r1、add(r2);//相加 System、out、print(r1、toString()+"+"+r2、toString()+"="); System、out、println(resultAdd、toString()+"="+resultAdd、toDouble()); Rat(yī)ionalNumberresultSubtract=r1、subtract(r2);//相減 System、out、print(r1、toString()+"-"+r2、toString()+"="); System、out、println(resultSubtract、toString()+"="+resultSubtract、toDouble());RationalNumberresultMultiply=r1、multiply(r2);//相乘 System、out、print(r1、toString()+"?á"+r2、toString()+"="); System、out、println(resultMultiply、toString()+"="+resultMultiply、toDouble()); Rat(yī)ionalNumberresultDivide=r1、divide(r2);//相除 System、out、print(r1、toString()+"??"+r2、toString()+"="); System、out、println(resultDivide、toString()+"="+resultDivide、toDouble());}}第四章數(shù)組和字符串4、1舉例說明如何聲明、創(chuàng)建和初始化數(shù)組。答:聲明數(shù)組:inta[]或int[]a創(chuàng)建數(shù)組:a=newint[]初始化inta[]={1,2,3,4,5}4、2舉例說明如何聲明、創(chuàng)建和初始化數(shù)組。答:聲明多維數(shù)組:inta[][]或int[]a[]或int[][]a創(chuàng)建數(shù)組:a=newint[][]初始化inta[][]={{1,2,3,4,5}{6,7,8,9,10}}4、3一個數(shù)組能夠存儲不同類型得元素嗎?答:不能。因為數(shù)組就就是將一組相同類型得數(shù)據(jù)順序存儲,組成一種復(fù)合數(shù)據(jù)類型。 特例:如果將數(shù)組聲明為Object類型,因為所有數(shù)據(jù)類型都直接或間接繼承自Object父類,所以該數(shù)組可存儲所有類型得元素。 Object[]objects=newObject[3];inti=1; Stringstring="abc";booleanb=true; objects[0]=i;objects[1]=string;objects[2]=b;4、4編寫一個Java程序,形成以下形式得二維數(shù)組,并輸出。12910254381124567122316151413221718192021解一:publicstaticvoidmain(Stringargs[]){intintArray[][]={{1,2,9,10,25}, {4,3,8,11,24}, {5,6,7,12,23}, {16,15,14,13,22}, {17,18,19,20,21}}; for(inti=0;i<=4;i++){ for(intj=0;j<=4;j++){ if(intArray[i][j]/10==0) System、out、print(""+intArray[i][j]+"");else System、out、print(intArray[i][j]+""); } System、out、println(""); }}解二:publicstaticvoidmain(String[]args){ introw=5;//這里控制輸出得行列請保證行列相等 int[][]a=newint[row][row]; a[0][0]=1; intn=2,zero=0,change=1;intvalue=2; for(inti=1;i<row;i++){ for(intj=0;j<(2*n-1);j++){ if(i%2!=0){ if(j<(2*n-2)/2){ a[zero++][change]=value++; continue; } if(j==(2*n-2)/2){ a[j][j]=value++; } if(j>(2*n-2)/2){ a[change][--zero]=value++; } }else{ if(j<(2*n-2)/2){ a[change][zero++]=value++; continue; } if(j==(2*n-2)/2){ a[j][j]=value++; } if(j>(2*n-2)/2){ a[--zero][change]=value++; } } } n++; change++;zero=0; } Stringout=""; for(inti=0;i<row;i++){ for(intj=0;j<row;j++){ out=""+a[i][j];if(out、length()==1) out=""+out; System、out、print(out+"");} System、out、println(); }}4、5java中得字符數(shù)組與字符串有什么區(qū)別?答:字符數(shù)組就就是由類型為char得字符元素組成得,每個元素位置存儲一個字符元素,對于數(shù)組名為s得數(shù)組,用chars[]表示。字符串就就是由0個或多個字符組成得序列,就就是一個對象,對于對象名為s用Strings表示。4、6確定一個字符數(shù)組長度與確定一個String對象得長度有什么不同?答:確定一個字符數(shù)組得長度用數(shù)組名、length,而確定一個String對象得長度用對象名、length()4、7用toUpperCase()和toLowerCase()方法實現(xiàn)大小寫轉(zhuǎn)換答:publicclassUpperAndLowerTest{publicstaticvoidmain(Stringargs[]){Strings1=("ABCdefgHIJkhl123"),s2,s3;System、out、println("未轉(zhuǎn)換時得字符串s1="+s1);bytet1[]=s1、getBytes();//將字符串s1轉(zhuǎn)換成字節(jié)數(shù)組t1s2=s1、toUpperCase();//將字符串s1得字母全部轉(zhuǎn)換成大寫并保存到s2s3=s1、toLowerCase();//將字符串s1得字母全部轉(zhuǎn)換成小寫并保存到s3bytet2[]=s2、getBytes();//將字符串s2轉(zhuǎn)換成字節(jié)數(shù)組t2bytet3[]=s3、getBytes();//將字符串s1轉(zhuǎn)換成字節(jié)數(shù)組t3for(inti=0;i<t1、length;i++){if(t1[i]!=t2[i])//如果t1[i]不就就是大寫字母而就就是小寫字母t1[i]=t2[i];//將小寫字母轉(zhuǎn)換成大寫字母else//如果就就是大寫字母t1[i]=t3[i];//將大寫字母轉(zhuǎn)換成小寫字母}s1=newString(t1);//將字節(jié)數(shù)組t1轉(zhuǎn)化成字符串保存到s1中System、out、println("進行字母大小寫轉(zhuǎn)換后得s1="+s1);}}4、8編寫一個程序通過連接兩個字符串得到一個新字符串并輸出。答:publicclassConcatTest{publicstaticvoidmain(Stringargs[]){Stringstr1="abcd";Stringstr2="efgh";Stringstr3=str1、concat(str2);System、out、println("str3="+str3);}}4、9聲明MyDate類,功能:增加1天,增減1月和增加1年得方法;輸出MyDate對象日期得方法;求兩個MyDat(yī)e對象日期差得方法。并提供能用當前日期初始化MyDate類對象得構(gòu)造方法。程序運行結(jié)果:源文件:MyDate、javaimportlendar;/***日歷類*author段智敏*/publicclassMyDat(yī)e{ publicstaticlongYEAR_MSEL=1000*60*60*24*365L; publicstaticlongMONTH_MSEL=1000*60*60*24*30L; publicstaticlongDATE_MSEL=1000*60*60*24L; publicstaticlongHOUR_MSEL=1000*60*60L;publicstaticlongMINUTE_MSEL=1000*60L; privateintyear; privateintmonth; privat(yī)eintdate;privateinthour; privateintminute; privateintsecond;privateCalendarcalendar; /** *構(gòu)造方法使用當前時間日期初始化對象 */ publicMyDate(){ calendar=Calendar、getInstance(); year=calendar、get(Calendar、YEAR);month=calendar、get(Calendar、MONTH)+1; date=calendar、get(Calendar、DAY_OF_MONTH); hour=calendar、get(Calendar、HOUR_OF_DAY); minute=calendar、get(Calendar、MINUTE); second=calendar、get(Calendar、SECOND);}/** *構(gòu)造方法使用指定年、月、日初始化對象 */publicMyDat(yī)e(intyear,intmonth,intdate){ set(year,month,date);} /** *構(gòu)造方法使用指定年、月、日、時、分、秒初始化對象 */ publicMyDate(intyear,intmonth,intdate,inthourOfDay,intminute,intsecond){ set(year,month,date,hourOfDay,minute,second); } /***設(shè)置日歷字段year、month和date得值。 *paramyear-用來設(shè)置YEAR日歷字段得值。*parammonth-用來設(shè)置month日歷字段得值。*paramdate-用來設(shè)置date日歷字段得值。*/publicvoidset(intyear,intmonth,intdat(yī)e){set(year,month,date,0,0,0); } /***設(shè)置日歷字段year、month和date得值。 *paramyear-用來設(shè)置YEAR日歷字段得值。*parammonth-用來設(shè)置month日歷字段得值。 *paramdate-用來設(shè)置dat(yī)e日歷字段得值。 *paramhourOfDay-用來設(shè)置hour日歷字段得值。 *paramminute-用來設(shè)置minute日歷字段得值。*paramsecond-用來設(shè)置second日歷字段得值。*/publicvoidset(intyear,intmonth,intdate,inthourOfDay,intminute,intsecond) { calendar=Calendar、getInstance(); calendar、set(year,month-1,date,hourOfDay,minute,second); this、year=calendar、get(Calendar、YEAR); this、month=calendar、get(Calendar、MONTH)+1;this、date=calendar、get(Calendar、DAY_OF_MONTH);this、hour=calendar、get(Calendar、HOUR_OF_DAY); this、minute=calendar、get(Calendar、MINUTE); this、second=calendar、get(Calendar、SECOND);} /** *增加一天*/ publicvoidaddOneDay() {date++;calendar、set(year,month,dat(yī)e);} /** *增減一月*/publicvoidaddOneMonth() { month++; calendar、set(year,month,date); }/** *增加一年 */ publicvoidaddOneYear() {year++; calendar、set(year,month,dat(yī)e);}/** *返回此時間值,以毫秒為單位。*return-當前時間,以從歷元至現(xiàn)在所經(jīng)過得UTC毫秒數(shù)形式。 */ publiclonggetTimeInMillis() { returncalendar、getTimeInMillis();}/***兩個日期相差得時間*parammd-另一個日期對象*return-相差得時間*/ publicStringapart(MyDatemd) { longmsel=this、getTimeInMillis()-md、getTimeInMillis(); msel=Math、abs(msel);booleanboo=msel>0?true:false; longyear=msel/MyDate、YEAR_MSEL; longdate=msel%MyDat(yī)e、YEAR_MSEL/MyDate、DATE_MSEL; longhour=msel%MyDate、DATE_MSEL/MyDate、HOUR_MSEL;longminute=msel%MyDate、HOUR_MSEL/MyDate、MINUTE_MSEL; longsecond=msel%MyDate、MINUTE_MSEL/1000; Stringresult=""; if(boo) result="已過去";else result="還有"; result+=(year+"年"+date+"天"+hour+"小時"+minute+"分鐘"+second+"秒"); returnresult; } /***返回此日歷得字符串表示形式。*return-此日歷得字符串表示形式。*/ publicStringtoString() { returnyear+"年"+month+"月"+date+"日,"+hour+":"+minute+":"+second;}}測試類源文件:TestMyDate、java/***MyDat(yī)e得測試類*author段智敏*/publicclassTestMyDate{ publicstaticvoidmain(String[]args) { MyDatemd1=newMyDat(yī)e();MyDatemd2=newMyDate(2014,1,30); System、out、println("當前時間:"+md1、toString());System、out、println("2014年除夕:"+md2、toString()); md2、addOneDay(); System、out、println("增加一天后,大年初一:"+md2、toString()); }}4、10求前n個質(zhì)數(shù)。要求確定m就就是否就就是質(zhì)數(shù),用早先求出得質(zhì)數(shù)對m得整除性來確定。/***求前n個質(zhì)數(shù)。<BR>*確定m就就是否就就是質(zhì)數(shù),用早先求出得質(zhì)數(shù)對m得整除性來確定。<BR>*author段智敏*/publicclassWork4_10{ /**用來存質(zhì)數(shù)得數(shù)組*/privateintarrayInt[];publicWork4_10(intn){ arrayInt=newint[n];arrayInt[0]=2;intindex=1;//保存數(shù)組得有效長度 booleanboo=true; for(inti=2;i<arrayInt、length;i++){ boo=true; for(intj=0;j<index;j++) { if(i%arrayInt[j]==0)//用已存入數(shù)組中得質(zhì)數(shù)判斷 boo=false; } if(boo)//如果就就是true則就就是指數(shù),存入數(shù)組,數(shù)組有效長度加1、 { arrayInt[index]=i; index++; } }}/***打印數(shù)組元素*/publicStringprintArray() { Stringresult="";for(inti=0;i<arrayInt、length;i++) { if(arrayInt[i]!=0) result+=arrayInt[i]+""; }returnresult;} publicstaticvoidmain(String[]args) {Work4_10w=newWork4_10(100); System、out、println(w、printArray()); }}4、11編寫實現(xiàn)從兩個字符串中找出最長得相同字符列得代碼。程序運行結(jié)果:/***找出兩個字符串中,最長得相同字符列*author段智敏*/publicclassWork4_11{publicstat(yī)icvoidmain(String[]args){ Stringstr1="0000abcdef0000"; Stringstr2="123ab4567cdef789abcdef"; Stringstr3=getLongSameString(str1,str2); System、out、println("str1="+str1);System、out、println("str2="+str2);System、out、println("最長得相同字符串為:"+str3); }publicstaticStringgetLongSameString(Stringstr1,Stringstr2){ Stringtemp=""; Stringsame=""; StringlongSame="";for(inti=0;i<str1、length();i++) { for(intj=i+1;j<=str1、length();j++) {temp=str1、substring(i,j); if(str2、indexOf(temp)>0) { same=temp; if(longSame、length()<same、length()){ longSame=temp; } } } } returnlongSame; }}4、12整理字符串,將字符
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版木制家具生產(chǎn)加工木工合作合同范本4篇
- 2025版委托檢測合同書-光纖網(wǎng)絡(luò)性能檢測技術(shù)3篇
- 二零二五版水產(chǎn)品電商平臺大數(shù)據(jù)分析服務(wù)合同2篇
- 2025年度母子公司新能源儲能技術(shù)研發(fā)合作合同3篇
- 《吳組緗天下太平》課件
- 單板加工自動化與智能化技術(shù)考核試卷
- 2025版互聯(lián)網(wǎng)醫(yī)療投資項目融資借款合同3篇
- 《物價上漲時政》課件
- 2025年度木工工具租賃與施工服務(wù)承包合同4篇
- 2025年兒童玩具連鎖店加盟合同
- 農(nóng)民工工資表格
- 【寒假預(yù)習】專題04 閱讀理解 20篇 集訓(xùn)-2025年人教版(PEP)六年級英語下冊寒假提前學(含答案)
- 2024年智能監(jiān)獄安防監(jiān)控工程合同3篇
- 2024年度窯爐施工協(xié)議詳例細則版B版
- 幼兒園籃球課培訓(xùn)
- 【企業(yè)盈利能力探析的國內(nèi)外文獻綜述2400字】
- 統(tǒng)編版(2024新版)七年級《道德與法治》上冊第一單元《少年有夢》單元測試卷(含答案)
- 100道20以內(nèi)的口算題共20份
- 高三完形填空專項訓(xùn)練單選(部分答案)
- 護理查房高鉀血癥
- 項目監(jiān)理策劃方案匯報
評論
0/150
提交評論