版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
/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.將編好的源文件保存起來,源文件的擴(kuò)展名必須是.java;(2)編譯Java源文件:使用Java編譯器(javac.exe)編譯源文件得到字節(jié)碼文件;(3)運行Java程序:Java程序分為兩類——Java應(yīng)用程序必須通過Java解釋器(java.exe)來解釋執(zhí)行其字節(jié)碼文件;Java小應(yīng)用程序必須通過支持Java標(biāo)準(zhǔn)的瀏覽器來解釋執(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語言標(biāo)識符的命名規(guī)則是什么?(1)由字母(包括英文字母、下劃線字符、美元字符、文字字符)和數(shù)字字符組成(2)限定標(biāo)識符的第一個字符不能是數(shù)字字符(3)不能和關(guān)鍵字重名(4)長度不能超過255個字符1.8JAVA有那些基本數(shù)據(jù)類型,它們的常量又是如何書寫的?數(shù)據(jù)類型關(guān)鍵字字節(jié)數(shù)默認(rèn)值常量舉例范圍邏輯類型布爾型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語言表達(dá)式描述以下數(shù)學(xué)計算式或邏輯條件: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è)在求以下表達(dá)式之前,整型變量a的值是4,試指出在求了以下表達(dá)式之后,變量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); } privatestaticbooleanisPerfectNumber(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{ publicstaticvoidmain(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{ publicstaticvoidmain(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!+1/3!+1/4!+/***按公式計算:e=1+1/1!+1/2!+1/3!+1/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é)果 */ staticdoublefactorial(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ù),越高,越準(zhǔn)確 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ù),越高,越準(zhǔn)確 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ù),按公式進(jìn)行計算圓周率 *@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é)束 } else returnnumber; } /** *彈出對話框,顯示結(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=test/2+1; test=test/2-1; System.out.println("第"+j+"天吃"+eat+"個"); } }}
第三章面向?qū)ο缶幊袒A(chǔ)3.1什么是面向?qū)ο蠹夹g(shù)?它有什么優(yōu)點?答:面向?qū)ο蠹夹g(shù)強調(diào)在軟件開發(fā)過程中面向客觀世界或問題域中的事物,采用人類在認(rèn)識客觀世界的過程中普遍運用的思維方法,直觀、自然地描述客觀世界中的有關(guān)事物。面向?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ū)別?答:類是一組對象共性的集合。類具有行為,它描述一個對象能夠做什么以與做的方法,它們是可以對這個對象進(jìn)行操作的程序和過程。對象是類的一個實例,它代表一個現(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進(jìn)來的)私有(private)不繼承不繼承友好(缺省默認(rèn))繼承不繼承受保護(hù)(protected)繼承繼承共有(public)繼承繼承3.6子類在什么情況下能隱藏超類的成員變量和方法?解:子類重載父類的成員變量、方法時候。3.7在子類中是否允許有一個方法和超類的方法名字相同,而類型不同?解:不允許。方法重寫是指:子類中定義一個方法,并且這個方法的名字、返回類型、參數(shù)個數(shù)、和類型與從父類繼承的方法完全相同。3.12以下程序有什么錯誤?解:類方法main()調(diào)用了類的實例變量,main方法是類方法,不能調(diào)用類的實例變量a,導(dǎo)致錯誤!3.13聲明一個復(fù)數(shù)類Complex。實現(xiàn)其基本功能。復(fù)數(shù)類:Complex.java/***復(fù)數(shù)類*@author段智敏*/publicclassComplex{ privatedoublereal;//real為實部 privatedoubleimage;//image為虛部 publicComplex() { real=Double.NaN; image=Double.NaN; } /** *構(gòu)造方法 *@paramreal-實部 *@paramimage-虛部 */ publicComplex(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-虛部 */ publicvoidsetComplex(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-當(dāng)前復(fù)數(shù)對象與參數(shù)指定的復(fù)數(shù)對象的和 */ publicComplexadd(Complexval) { Complexresult=newComplex(this.real+val.getReal(),this.image+val.getImage()); returnresult; } /** *復(fù)數(shù)減法,當(dāng)前對象減去參數(shù)對象 *@paramval-另一個復(fù)數(shù) *@return-當(dāng)前復(fù)數(shù)對象與參數(shù)指定的復(fù)數(shù)對象的差 */ publicComplexsubtract(Complexval)//,返回, { Complexresult=newComplex(this.real-val.getReal(),this.image-val.getImage()); returnresult; } /** *復(fù)數(shù)乘法 *@paramval-另一個復(fù)數(shù) *@return-當(dāng)前復(fù)數(shù)對象與參數(shù)指定的復(fù)數(shù)對象的積 */ publicComplexmultiply(Complexval) { Complexresult=newComplex(); 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-當(dāng)前復(fù)數(shù)對象與參數(shù)指定的復(fù)數(shù)對象的商 */ publicComplexdivide(Complexval) { Complexresult=newComplex(); 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ù)測試類:TestComplex.java程序運行結(jié)果:/***復(fù)數(shù)測試類*@author段智敏**/publicclassTestComplex{ publicstaticvoidmain(String[]args) { Complexcomplex1=newComplex(2,4); Complexcomplex2=newComplex(3,-1); Complexresult=newComplex(); System.out.println("復(fù)數(shù)1:"+complex1.toString()+";實部"+complex1.getReal()+";虛部" +complex1.getImage()); System.out.println("復(fù)數(shù)2:"+complex2.toString()+";實部"+complex2.getReal()+";虛部" +complex2.getImage()); result=complex1.add(complex2);//兩個復(fù)數(shù)之和 System.out.println("復(fù)數(shù):"+complex1.toString()+"與"+"復(fù)數(shù):"+complex2.toString() +"之和為:"+result.toString()); result=complex1.subtract(complex2);//兩個復(fù)數(shù)之差 System.out.println("復(fù)數(shù):"+complex1.toString()+"與"+"復(fù)數(shù):"+complex2.toString() +"之差為:"+result.toString()); result=complex1.multiply(complex2);//兩個復(fù)數(shù)乘積 System.out.println("復(fù)數(shù):"+complex1.toString()+"與"+"復(fù)數(shù):"+complex2.toString() +"的乘積為:"+result.toString()); result=complex1.divide(complex2);//兩個復(fù)數(shù)的商 System.out.println("復(fù)數(shù):"+complex1.toString()+"與"+"復(fù)數(shù):"+complex2.toString() +"的商為:"+result.toString()); }}3.14聲明一個有理數(shù)類RationalNum。要求提供有理數(shù)的四則運算,以分?jǐn)?shù)形式輸出有理數(shù)和以浮點數(shù)形式輸出有理數(shù)等方法。有理數(shù)類:RationalNumber.java/***有理數(shù)類。*@author段智敏*/classRationalNumber{ /**numerator分子*/ intnumerator; /**denominator分母*/ intdenominator; publicRationalNumber() { 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-返回分子部分。 */ publicintgetNumerator() { returnnumerator; } /** *得到分母部分。 *@return-返回分母部分。 */ publicintgetDenominator() { returndenominator; } /** *設(shè)置有理數(shù)的分子,分母。 *@paramfenzi-分子。 *@paramfenmu-分母。 */ publicvoidsetRational(intfenzi,intfenmu) { this.numerator=fenzi; this.denominator=fenmu; } /** *有理數(shù)加法。 *@paramr-另一個有理數(shù)。 *@return-返回當(dāng)前與參數(shù)有理數(shù)的和。 */ publicRationalNumberadd(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-返回當(dāng)前有理數(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-返回當(dāng)前與參數(shù)有理數(shù)的乘機。 */ publicRationalNumbermultiply(RationalNumberr) { inta=this.numerator*r.getNumerator(); intb=this.denominator*r.getDenominator(); RationalNumberresult=newRationalNumber(); result.setRational(a,b); result.yuefen(); returnresult; } /** *有理數(shù)除法。 *@paramr-另一個有理數(shù)。 *@return-返回當(dāng)前與參數(shù)有理數(shù)的商。 */ publicRationalNumberdivide(RationalNumberr) { r.setRational(r.getDenominator(),r.getNumerator()); RationalNumberresult=this.multiply(r); result.yuefen(); returnresult; } /** *約分,化簡成分?jǐn)?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ù)的分?jǐn)?shù)表示形式。 *@return-該有理數(shù)的分?jǐn)?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); } catch(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()); RationalNumberresultSubtract=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()); RationalNumberresultDivide=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ù)類型都直接或間接繼承自O(shè)bject父類,所以該數(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("進(jìn)行字母大小寫轉(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對象日期的方法;求兩個MyDate對象日期差的方法。并提供能用當(dāng)前日期初始化MyDate類對象的構(gòu)造方法。程序運行結(jié)果:源文件:MyDate.javaimportjava.util.Calendar;/***日歷類*@author段智敏*/publicclassMyDate{ 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; privateintdate; privateinthour; privateintminute; privateintsecond; privateCalendarcalendar; /** *構(gòu)造方法使用當(dāng)前時間日期初始化對象 */ 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)造方法使用指定年、月、日初始化對象 */ publicMyDate(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,intdate) { set(year,month,date,0,0,0); } /** *設(shè)置日歷字段year、month和date的值。 *@paramyear-用來設(shè)置YEAR日歷字段的值。 *@parammonth-用來設(shè)置month日歷字段的值。 *@paramdate-用來設(shè)置date日歷字段的值。 *@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,date); } /** *增減一月 */ publicvoidaddOneMonth() { month++; calendar.set(year,month,date); } /** *增加一年 */ publicvoidaddOneYear() { year++; calendar.set(year,month,date); } /** *返回此時間值,以毫秒為單位。 *@return-當(dāng)前時間,以從歷元至現(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%MyDate.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/***MyDate的測試類*@author段智敏*/publicclassTestMyDate{ publicstaticvoidmain(String[]args) { MyDatemd1=newMyDate(); MyDatemd2=newMyDate(2014,1,30); System.out.println("當(dāng)前時間:"+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=
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版國際金融風(fēng)險管理合同范本3篇
- 二零二五版建筑工地勞務(wù)用工及社會保障服務(wù)合同范本3篇
- 二零二五年酒店客房協(xié)議價優(yōu)惠合作合同3篇
- 2024政府采購合同環(huán)境與安全監(jiān)督協(xié)議3篇
- 2025年新型城鎮(zhèn)化項目水電設(shè)施安裝施工合同3篇
- 二零二五版板房租賃與租賃期滿資產(chǎn)評估與轉(zhuǎn)讓合同3篇
- 二零二五年度出租車司機服務(wù)規(guī)范與客戶滿意度提升合同3篇
- 二零二五年透水混凝土工程驗收與評估合同2篇
- 二零二五年智能交通管理系統(tǒng)采購合同3篇
- 二零二五版房屋代理租賃資產(chǎn)評估合同3篇
- 蓋洛普Q12解讀和實施完整版
- 2023年Web前端技術(shù)試題
- GB/T 20840.8-2007互感器第8部分:電子式電流互感器
- GB/T 14864-2013實心聚乙烯絕緣柔軟射頻電纜
- 品牌策劃與推廣-項目5-品牌推廣課件
- 信息學(xué)奧賽-計算機基礎(chǔ)知識(完整版)資料
- 發(fā)煙硫酸(CAS:8014-95-7)理化性質(zhì)及危險特性表
- 數(shù)字信號處理(課件)
- 公路自然災(zāi)害防治對策課件
- 耳鳴中醫(yī)臨床路徑
- 安徽身份證號碼前6位
評論
0/150
提交評論