Java程序設(shè)計(jì)習(xí)題答案_第1頁(yè)
Java程序設(shè)計(jì)習(xí)題答案_第2頁(yè)
Java程序設(shè)計(jì)習(xí)題答案_第3頁(yè)
Java程序設(shè)計(jì)習(xí)題答案_第4頁(yè)
Java程序設(shè)計(jì)習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《Java程序設(shè)計(jì)》習(xí)題答案第1章拓展訓(xùn)練1、安裝JDK,并配置環(huán)境變量。答:參考項(xiàng)目1Java環(huán)境的安裝、搭建。2、編寫(xiě)程序輸入“床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉(xiāng)?!钡狡聊弧⒖汲绦颍篶lassPoem{{ publicstaticvoidmain(Stringargs[]) { System.out.println("床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉(xiāng)。"); }}習(xí)題答案一、填空題1.Java語(yǔ)言是___SUN______公司發(fā)明的。2.字節(jié)碼文件的后綴名為_(kāi)___class_____。3.使用Java語(yǔ)言編程時(shí),代碼對(duì)大小寫(xiě)___敏感______。4.在DOS環(huán)境下,編譯Java程序的命令是___javac______。二、簡(jiǎn)答題1.Java語(yǔ)言的特點(diǎn)是什么?答:簡(jiǎn)單性、安全性、平臺(tái)無(wú)關(guān)性、可移植性、面向?qū)ο笳Z(yǔ)言、多線程、健壯性。2.如何設(shè)置JDK?答:設(shè)置系統(tǒng)環(huán)境變量java_home為JDK安裝目錄;設(shè)置系統(tǒng)環(huán)境變量path為“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”;設(shè)置系統(tǒng)環(huán)境變量classpath為“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”。3.開(kāi)發(fā)與運(yùn)行Java程序需要經(jīng)過(guò)哪些主要步驟和過(guò)程?答:第一步,搭建Java開(kāi)發(fā)環(huán)境;第二步,編寫(xiě)程序;第三步,編譯程序;第四步,解釋運(yùn)行。第2章拓展訓(xùn)練1、參照任務(wù),編寫(xiě)一個(gè)程序,輸出自己的名字。(添加適當(dāng)?shù)淖⑨尯涂瞻追﹨⒖汲绦颍簆ublicclassHello{ publicstaticvoidmain(Stringargs[]) {System.out.println("你的姓名"); }}2、將任務(wù)中未出現(xiàn)的基本類型,再進(jìn)行兩兩加法運(yùn)算,并自行分析結(jié)果。參考程序: 略。3、寫(xiě)出下面表達(dá)式的結(jié)果,假設(shè)a=1,b=2,f=false:(1)--a%b++ (2)(a>=3&&a<=20?a:b)(3)f&&(a<b) (4)(++a)>a(1)0 (2)true (3)false (4)false4、輸入平行四邊形的底和高,求面積。參考程序:importjava.io.*;//引入io包中的IOException類classParallelogram{publicstaticvoidmain(Stringarg[])throwsIOException//拋出異常 { Stringstr; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.println("請(qǐng)輸入平行四邊形的底邊長(zhǎng)度:"); str=br.readLine(); floatf1=Float.parseFloat(str);//轉(zhuǎn)換字符串為實(shí)型數(shù)據(jù) System.out.println("請(qǐng)輸入平行四邊形的高:"); str=br.readLine(); floatf2=Float.parseFloat(str);//轉(zhuǎn)換字符串為實(shí)型數(shù)據(jù) System.out.println("平行四邊形的面積為:"+(f1*f2)); }}習(xí)題答案一、簡(jiǎn)答題1.Java中的標(biāo)識(shí)符是由哪些字符組成的?答:Java語(yǔ)言規(guī)定標(biāo)識(shí)符由字母,下劃線,美元符號(hào)和數(shù)字組成,并且第一個(gè)字符不能是數(shù)字字符。2.Java中有哪些關(guān)鍵字?簡(jiǎn)單數(shù)據(jù)類型包含哪幾種?各種數(shù)據(jù)類型變量的定義方法和常量的表示方法及取值范圍。答:Java的關(guān)鍵字有:abstractelseinterfacesuperBooleanextendslongswitchbreakfalsenativesynchronizedbytefinalnewthiscasefinallynullthrowcatchfloatpackagethrowscharforprivatetransientclassifprotectedtruecountinueimplementspublictrydefaultimportreturnvoiddoinstanceofshortwhiledoubleintstatic 簡(jiǎn)單數(shù)據(jù)類型包括:六種數(shù)字類型(四個(gè)整數(shù)型,兩個(gè)浮點(diǎn)型),一種字符類型,還有一種布爾型。 各種數(shù)據(jù)類型變量的定義方法和常量的表示方法及取值范圍,參看案例2-2-1的相關(guān)知識(shí)。3.Java中各簡(jiǎn)單數(shù)據(jù)類型間的優(yōu)先次序和自動(dòng)轉(zhuǎn)換規(guī)則是什么?各數(shù)據(jù)類型間在什么情況下,進(jìn)行自動(dòng)轉(zhuǎn)換,在什么情況下使用強(qiáng)制轉(zhuǎn)換?答:類型按精度從“底”到“高”排列了順序?yàn)椋篵yte、short、int、long、float、double當(dāng)把在級(jí)別低的變量的值賦給級(jí)別高的變量時(shí),系統(tǒng)自動(dòng)完成數(shù)據(jù)類型的轉(zhuǎn)換。當(dāng)把在級(jí)別高的變量的值賦給級(jí)別底變量時(shí),必須使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算。4.Java中有哪些運(yùn)算符?這些運(yùn)算符的優(yōu)先關(guān)系是怎樣的?答:參看表2-6運(yùn)算符優(yōu)先級(jí)5.分隔符種類是什么?各包括哪些符號(hào),作用是什么?。答:分隔符有普通分隔符、空白符和注釋三種。普通分隔符有:,逗號(hào)分隔變量聲明中連續(xù)的標(biāo)識(shí)符,或在for語(yǔ)句中連接語(yǔ)句。;分號(hào)語(yǔ)句(statement)結(jié)束符。。句號(hào)用于分隔包、子包和類或分隔引用變量中的變量和方法。()括號(hào)用于在方法定義和訪問(wèn)中將參數(shù)表括起來(lái),或在表達(dá)式中定義運(yùn)算的先后順序,或在控制語(yǔ)句中將表達(dá)式和類型轉(zhuǎn)換括起來(lái)。[]方括號(hào)用于聲明數(shù)據(jù)類型,及引用數(shù)組的元素值。{}花括號(hào)它將若干語(yǔ)句序列括起來(lái)作為一個(gè)程序代碼塊,或?yàn)閿?shù)組初始化賦值空白符主要包括:制表符、空格符和回車。三種注釋方式://單行注釋符。/*……*/塊注釋符。/**……*/文檔注釋。二、程序調(diào)試題答案:略。三、編程題1.編寫(xiě)程序,已知半徑,求圓面積。importjava.io.*;//引入io包中的IOException類classex01{publicstaticvoidmain(Stringarg[]){ floatr=2; System.out.println("面積為:"+(3.14*r*r)); }}2.編寫(xiě)程序,對(duì)一個(gè)已知三位整數(shù),求各個(gè)位上的數(shù)字和。importjava.io.*;//引入io包中的IOException類classex02{publicstaticvoidmain(Stringarg[]){ inta=132; System.out.println("132各個(gè)位上的數(shù)字和為:"+(132/100+132%100/10+132%10)); }}3.編寫(xiě)程序,輸入球的半徑,求體積。參考答案:importjava.io.*;//引入io包中的IOException類classex03{publicstaticvoidmain(Stringarg[])throwsIOException//拋出異常{Stringstr;BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.println("inputafloat:"); str=br.readLine(); floatr=Float.parseFloat(str); System.out.println("體積為:"+(4/3*3.14*r*r*r)); }}4.編寫(xiě)程序,輸入梯形的上底、下底和高,求面積。參考答案:importjava.io.*;//引入io包中的IOException類classex04{publicstaticvoidmain(Stringarg[])throwsIOException//拋出異常{Stringstr;BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.println("上底:"); str=br.readLine(); floatfs=Float.parseFloat(str); System.out.println("下底:"); str=br.readLine(); floatfx=Float.parseFloat(str); System.out.println("高:"); str=br.readLine(); floatfg=Float.parseFloat(str); System.out.println("面積為:"+(fs+fx)*fg/2); }}5.編寫(xiě)程序,對(duì)輸入的兩個(gè)整數(shù)進(jìn)行比較,輸出大數(shù)。提示:使用三元條件運(yùn)算符(?:)參考程序:importjava.io.*;//引入io包中的IOException類classex05{publicstaticvoidmain(Stringarg[])throwsIOException//拋出異常{Stringstr;BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.println("inputaint:"); str=br.readLine(); inti1=Integer.parseInt(str);//轉(zhuǎn)換字符串為整型數(shù)據(jù) //或i1=Int.valueOf(str).intValue(); System.out.println("inputanotheraint:"); str=br.readLine(); inti2=Integer.parseInt(str);//轉(zhuǎn)換字符串為整型數(shù)據(jù) //或i2=Int.valueOf(str).intValue(); i1=i1>i2?i1:i2; System.out.println("大數(shù)是:"+i1); }}第3章拓展訓(xùn)練參考答案:【3.1.1拓展訓(xùn)練】給出華氏溫度F,輸出攝氏溫度c。其中公式classExp3{publicstaticvoidmain(String[]args){intf=90;floatc;c=5*(f-32)/9F;System.out.println("c="+c);}}【3.2.1拓展訓(xùn)練】比較a,b兩個(gè)數(shù),若a大于b,則輸出“a>b”,否則輸出“a<=b”。classExp321{publicstaticvoidmain(String[]args){inta,b;a=90;b=78;System.out.println("a="+a+"b="+b);if(a>b)System.out.println("a>b");elseSystem.out.println("a<=b");}}【3.2.2拓展訓(xùn)練】編程計(jì)算:當(dāng)x<=-1時(shí),f(x)=2*x*x+10;當(dāng)-1<x<1時(shí),f(x)=3*x+78;當(dāng)x>=1時(shí),f(x)=x*x*x-1。classExp322{publicstaticvoidmain(String[]args){intx=6;intfx;if(x<=-1)fx=2*x*x+10;elseif(x<1)fx=3*x+78;elsefx=x*x*x-1;System.out.println("fx="+fx);}}【3.2.3拓展訓(xùn)練】輸入整數(shù)1~7,可以轉(zhuǎn)換輸出對(duì)應(yīng)的星期幾英文名稱,若為其它整數(shù),則輸出“輸入數(shù)據(jù)錯(cuò)誤!”。importjava.util.Scanner;classUseSwitch{publicstaticvoidmain(String[]args){intday=0;System.out.println("inputanumber:");Scannerscanner=newScanner(System.in);//創(chuàng)建scanner對(duì)象接收數(shù)據(jù)day=Integer.valueOf(scanner.nextLine());//把數(shù)據(jù)轉(zhuǎn)換為int類型的數(shù)據(jù)switch(day){case1:System.out.println("Monday");break;case2:System.out.println("Tuesday");break;case3:System.out.println("Wednesday");break;case4:System.out.println("Thursday");break;case5:System.out.println("Firday");break;case6:System.out.println("Saturday");break;case7:System.out.println("Sunday");break;default:System.out.println("輸入數(shù)據(jù)錯(cuò)誤!");break;}}}【3.3.1拓展訓(xùn)練】1、如果一個(gè)三位數(shù)的個(gè)位數(shù)、十位數(shù)和百位數(shù)的立方和等于該數(shù)本身,則稱該數(shù)位水仙花數(shù)。編程打印所有的水仙花數(shù)。classExp3-3-1{publicstaticvoidmain(String[]args){intnum;inta,b,c;for(num=100;num<=999;num++){a=num/100;b=(num-a*100)/10;c=num-a*100-b*10;if(a*a*a+b*b*b+c*c*c==num)System.out.println(num);}}}【3.3.2拓展訓(xùn)練】編寫(xiě)程序,打印輸出以下圖案。112123412345classExp332{publicstaticvoidmain(String[]args){inti,j;for(i=1;i<6;i++){for(j=1;j<=i;j++)System.out.print(j+"");System.out.print("\n");}}}【3.4.1拓展訓(xùn)練】1、輸出100以內(nèi)的素?cái)?shù)。classExp341{publicstaticvoidmain(String[]args){intn,k,i,flag=1;for(n=2;n<=100;n++){k=(int)Math.sqrt(n+1);for(i=2;i<=k;i++){if(n%i==0){flag=0;break;}}if(flag==1)System.out.print(n+"");flag=1;}}}習(xí)題答案一、填空題1.寫(xiě)出下面邏輯表達(dá)式的值,設(shè)a=2,b=3,c=5。(1)a+b>c&&b==c的值為(2)(a<b)&&(a<c)的值為(3)a==(b-c)的值為答案:(1)false(2)true(3)true2.以下程序時(shí)實(shí)現(xiàn)輸出x,y,z三個(gè)整數(shù)的最小者,填完整程序。classSmallNumber{publicstaticvoidmain(String[]args){intx=30,y=56,z=23;int(1);if(x<y)(2);elsetemp=y;if((3))temp=z;System.out.println("Smallnumberis"+temp);}}答案:(1)temp(2)temp=x(3)temp>z二、編程題1.編程計(jì)算一元二次方程的實(shí)根(設(shè))。參考程序:classProblem1{publicstaticvoidmain(String[]args){inta,b,c;doublex1,x2;doubletemp;a=1;b=-5;c=6;temp=Math.sqrt(b*b-4*a*c);x1=(-b+temp)/(2*a);x2=(-b-temp)/(2*a);System.out.println("x1="+x1);System.out.println("x2="+x2);}}2.編寫(xiě)程序判斷某一年是否為閏年。參考程序:classProblem2{publicstaticvoidmain(String[]args){intyear;booleanflag;year=1976;if(year%4==0){if(year%100==0){if(year%400==0)flag=true;elseflag=false;}elseflag=true;;}elseflag=false;if(flag)System.out.print("Theyearisaleapyear!");elseSystem.out.print("Theyearisnotaleapyear!");}}3.編寫(xiě)程序,打印下了100~200之間不能被3整除的數(shù)。參考程序:classProblem3{publicstaticvoidmain(String[]args){inti,j;j=0;for(i=100;i<=200;i++){if(i%3!=0)//判斷是否能被3整除{System.out.print(i+"");j++;if(j%5==0)System.out.print("\n");//換行}}}}4.編寫(xiě)程序列舉百元買百雞,公雞每只5元,母雞每只3元,小雞1元3只,有多少種買法。參考程序:classProblem4{publicstaticvoidmain(String[]args){intcock,hen,chicken;//公雞cock,母雞hen,小雞chickenfor(cock=0;cock<=20;cock++)for(hen=0;hen<=33;hen++)for(chicken=0;chicken<=100;chicken++)if((cock+hen+chicken==100)&&(hen*3+cock*5+chicken/3==100))System.out.println("cock="+cock+"hen="+hen+"chicken="+chicken);}}5.編寫(xiě)程序,求200~300之間的數(shù),個(gè)位、十位和百位數(shù)的乘積為42,和為12。參考程序:classProblem5{publicstaticvoidmain(String[]args){intnumber;inta,b,c;for(number=200;number<300;number++){a=number/100;b=(number-a*100)/10;c=number-a*100-b*10;if((a*b*c==42)&&(a+b+c==12))System.out.println(number);}}}第4章拓展訓(xùn)練1、定義一個(gè)10個(gè)長(zhǎng)度的一維整型數(shù)組,輸出數(shù)組中所存數(shù)的平均值。參考程序:publicclassAverage{publicstaticvoidmain(Stringargs[]){ inti,sum=0; inta[]={84,85,78,79,86,95,68,56,63,93}; for(i=0;i<10;i++) sum=sum+a[i] System.out.print("數(shù)組元素為:"); for(i=0;i<10;i++) System.out.print(a[i]+""); System.out.println("平均值為:”+sum/10.0);}}2、定義一個(gè)類,計(jì)算并輸出楊輝三角。參考程序:publicclassYangHui{ publicstaticvoidmain(String[]args) { inti,j; intlevel=6; inta[][]=newint[level][]; System.out.println("楊輝三角形:"); for(i=0;i<a.length;i++) a[i]=newint[i+1]; a[0][0]=1; for(i=1;i<length;i++){ a[i][0]=1; for(j=1;j<a.length;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; a[i][a[i].length-1]=1; } for(i=0;i<a.length;i++){ for(j=0;j<a[i].length;j++) System.out.print(a[i][j]+""); System.out.println(); } }}3、使用冒泡排序法,對(duì)上題數(shù)組元素進(jìn)行降序排列。參考程序:publicclasssort{publicstaticvoidmain(String[]args){inti=0,j=0,k;intintArray[]={64,21,55,17,36};intlen=intArray.length;booleanb=false; //用于標(biāo)示是否有元素交換for(i=0;i<len;i++){for(j=0;j<len-i-1;j++)if(intArray[j]<intArray[j+1]){intt=intArray[j];intArray[j]=intArray[j+1];intArray[j+1]=t; b=true; //表示本輪有元素交換} if(b)b=false;elsebreak;//有交換還原標(biāo)記,無(wú)交換跳出循環(huán) System.out.print("第"+(i+1)+"輪:"); for(k=0;k<len;k++)System.out.print(intArray[k]+""); System.out.println(); }System.out.println("排序后的結(jié)果為:");for(i=0;i<len;i++)System.out.print(intArray[i]+"");}}4、描述如何應(yīng)用二分法在數(shù)組中{1,3,4,5,7,8,10,12,23,34,45,55}查找關(guān)鍵字10。答:略。5、有一行文字。要統(tǒng)計(jì)出其中英文大寫(xiě)字母、小寫(xiě)字母、數(shù)字、空格以及其它字符各有多少個(gè)。importjava.io.*;//引入io包中的IOException類publicclassex06{ publicstaticvoidmain(Stringargs[])throwsIOException//拋出異常{ intupp=0,low=0,dig=0,spa=0,oth=0,i; Stringstr; charchr; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.print("請(qǐng)輸入一個(gè)字串:"); str=br.readLine(); for(i=0;i<str.length();i++) { chr=str.charAt(i); if(chr>='A'&&chr<='Z') upp++; else if(chr>='a'&&chr<='z') low++; else if(chr>='0'&&chr<='9') dig++; else if(chr=='') spa++; else oth++; } System.out.print("upp="+upp+"low="+low+"dig="+dig+"spa="+spa+"oth="+oth); }}習(xí)題答案一、編程題1、已知一個(gè)班10個(gè)學(xué)生,要求輸入這10個(gè)學(xué)生的成績(jī),然后求平均成績(jī)。importjava.io.*;//引入io包中的IOException類publicclassex01{ publicstaticvoidmain(Stringargs[])throwsIOException//拋出異常{ floatscore[],sum=0,aver; inti; Stringstr; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); score=newfloat[10]; System.out.print("請(qǐng)輸入學(xué)生的成績(jī):"); for(i=0;i<10;i++) { str=br.readLine(); score[i]=Float.parseFloat(str); sum=sum+score[i]; } aver=sum/i; System.out.print("平均成績(jī)?yōu)椋?+aver); }}2、已知一個(gè)班10個(gè)學(xué)生的成績(jī),存放在一個(gè)一維數(shù)組中,要求找出其中成績(jī)最高的學(xué)生的成績(jī)和該生的序號(hào)。publicclassex02{ publicstaticvoidmain(Stringargs[]) { floatscore[]={78,89,48,89,68,78,98,63,75,88},max=0; inti,n=0; for(i=0;i<10;i++) { if(score[i]>max){max=score[i];n=i;} } System.out.print("最高成績(jī)?yōu)椋?+max+",序號(hào)為"+n); }}3、有三個(gè)學(xué)生,上4門課,要求輸入全部學(xué)生的各科成績(jī),并分別求出每門課的平均成績(jī)。importjava.io.*;//引入io包中的IOException類publicclassex03{ publicstaticvoidmain(Stringargs[])throwsIOException//拋出異常{ floatscore[][],sum=0,aver=0; Stringstr; inti,j; score=newfloat[3][4]; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.print("請(qǐng)輸入學(xué)生成績(jī):"); for(i=0;i<3;i++) for(j=0;j<4;j++) { str=br.readLine(); score[i][j]=Float.parseFloat(str); } for(i=0;i<4;i++) { for(j=0;j<3;j++) { sum=sum+score[j][i]; } aver=sum/3; sum=0; System.out.println("第"+(i+1)+"門課的平均成績(jī)?yōu)椋?+aver); } }}4、將一個(gè)數(shù)組中的值按逆序重新存放。例如,原來(lái)的順序是8、7、6、9、5,要求改為5、9、6、7、8。importjava.io.*;//引入io包中的IOException類publicclassex04{ publicstaticvoidmain(Stringargs[])throwsIOException//拋出異常{ inta[],i,temp,n=5; Stringstr; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); a=newint[5]; System.out.print("請(qǐng)輸入五個(gè)整數(shù):"); for(i=0;i<n;i++) { str=br.readLine(); a[i]=Integer.valueOf(str).intValue(); } for(i=0;i<n;i++) System.out.print(a[i]+""); System.out.println(); for(i=0;i<n/2;i++) { temp=a[i]; a[i]=a[n-i-1]; a[n-i-1]=temp; } for(i=0;i<n;i++) System.out.print(a[i]+""); }}5、有15個(gè)數(shù)按由小到大的順序存放在一個(gè)數(shù)組中,輸入一個(gè)數(shù),要求用二分查找法找出該數(shù)在數(shù)組中的位置。如果該數(shù)不存在,則輸出“無(wú)此數(shù)”。importjava.io.*;//引入io包中的IOException類publicclassex05{ publicstaticvoidmain(Stringargs[])throwsIOException//拋出異常{ inta[]={1,2,3,4,5,6,7,8,10,11,12,13,14,15,16},num,i=15; Stringstr; booleanb=false; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.print("請(qǐng)輸入要查找的整數(shù):"); str=br.readLine(); num=Integer.valueOf(str).intValue(); if(num<a[0]||num>a[14]) b=false; else { intlow=0; inthigh=a.length-1; while(high>=low){ intmid=(low+high)/2; if(num<a[mid]) high=mid-1; elseif(num==a[mid]) {System.out.print(mid);b=true;break;} else low=mid+1; } } if(!b)System.out.print("無(wú)此數(shù)!"); }}6、對(duì)一維整型數(shù)組a中的10個(gè)整數(shù),用冒泡排序法,對(duì)數(shù)組元素排序,將結(jié)果輸出。參考程序:classarraySort{publicstaticvoidmain(Stringarg[]){int[]a={3,4,67,8,12,44,654,67,76,98}; inti=0,j=0; intlen=a.length; booleanb=false; for(i=0;i<len;i++){for(j=0;j<len-i-1;j++)if(a[j]>a[j+1]){intt=a[j];a[j]=a[j+1];a[j+1]=t; b=true;} if(b)b=false;elsebreak; }System.out.println("排序后的結(jié)果為:");for(i=0;i<len;i++)System.out.print(a[i]+"");}}7、使用字符串處理方法對(duì)文本語(yǔ)句中的單詞計(jì)數(shù)。參考程序:publicclassCalWord{ publicstaticvoidmain(Stringargs[]){ Strings1="MyfriendWelcometoJava!"; System.out.println("Thewordsofthissentence:"); intn=0; for(inti=0;i<s1.length();i++){ charm=s1.charAt(i); if(!((m>='A'&&m<='Z')||(m>='a'&&m<+'z'))) n=n+1; } System.out.print(n); }}8、編寫(xiě)程序,比較兩個(gè)字符串是否相等。參考程序:importjava.io.*;publicclassStringCompare{ publicstaticvoidmain(String[]args)throwsIOException//拋出異常 { Stringstr1; Stringstr2; BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); System.out.println("輸入字符串1:"); str1=br.readLine(); System.out.println("輸入字符串1:"); str2=br.readLine(); if(str1.equals(str2) System.out.println("字符串相等"); else System.out.println("字符串不相等"); }}第5章拓展訓(xùn)練答案5.1創(chuàng)建一個(gè)日期類Date并輸出信息。publicclassDate{privateintday;privateintmonth;privateintyear;publicvoidsetDate(intd,intm,inty){day=d;month=m;year=y;}publicvoidprintDate(){System.out.println("今天是"+year+"年"+month+"月"+day+"日");}publicstaticvoidmain(String[]args){Datetoday=newDate();today.setDate(18,2,2010);Datethisday;thisday=today;thisday.printDate();}}5.2.1使用方法計(jì)算3、6和9的階乘并輸出結(jié)果publicclassTestFunction2{//第一個(gè)方法是main方法,它3次調(diào)用了第二個(gè)方法publicstaticvoidmain(String[]args){factorial(5);factorial(6);factorial(7);}//第二個(gè)方法是factorial方法,它求出參數(shù)n的階乘并輸出staticvoidfactorial(intn){longz=1L;intx=n;for(;x>0;x--)//該循環(huán)求n的階乘z*=x;System.out.println(n+"!="+z);//輸出n的階乘}}5.2.2設(shè)計(jì)一個(gè)矩形類,封裝它的狀態(tài)和行為,定義數(shù)據(jù)變量和方法,計(jì)算矩形的面積。classarea{doublewidth,height;area(doublew,doubleh){width=w;height=h;}doubleproduct(){returnwidth*height;}}classexample1{publicstaticvoidmain(String[]args){doubled;area矩形=newarea(30,40);d=矩形.product();System.out.println("矩形的面積是:"+d);}}5.3.1設(shè)計(jì)程序,實(shí)現(xiàn)子類可以繼承父類中非私有數(shù)據(jù)成員。publicclassExtendsExam{publicstaticvoidmain(String[]args){subclasse=newsubclass();e.x=1;e.z="Hello!";e.setA();System.out.println("調(diào)用方法getX()的結(jié)果:"+e.getX());System.out.println("調(diào)用方法getZ()的結(jié)果:"+e.getZ());System.out.println("調(diào)用方法getA()的結(jié)果:"+e.getA());}}classsuperclass{publicintx;privatefloaty;Stringz;intgetX(){return(x);}StringgetZ(){return(z);}}classsubclassextendssuperclass{privateinta;voidsetA(){a=2;}intgetA(){return(a);}}5.3.2設(shè)計(jì)程序,建立Animal類,從Animal類派生出Dog類和Cat類,通過(guò)方法覆蓋實(shí)現(xiàn)類的多態(tài)。classAnimal{publicvoidfun(){System.out.println("Animalisfun");}}classDogextendsAnimal{publicvoidfun(){System.out.println("wangwang");}}classCatextendsAnimal{publicvoidfun(){System.out.println("miaomiao");}}publicclassTestPoly{publicstaticvoidmakefun(Animala){a.fun();}publicstaticvoidmain(String[]args){Dogb=newDog();Catc=newCat();makefun(b);makefun(c);}}5.4.1設(shè)計(jì)程序計(jì)算圓柱體的體積,使用接口實(shí)現(xiàn)類的多重繼承。interfaceFace1{doublepi=3.14;abstractdoublearea();}interfaceFace2{abstractvoidvolume();}publicclassCylinderimplementsFace1,Face2{privatedoubleradius;privateintheight;publicCylinder(doubler,inth){radius=r;height=h;}publicdoublearea(){returnpi*radius*radius;}publicvoidvolume(){System.out.println("圓柱體的體積="+area()*height);}publicstaticvoidmain(String[]args){Cylindervolu=newCylinder(2.0,3);volu.volume();}}5.4.2設(shè)計(jì)程序?qū)崿F(xiàn)一個(gè)接口繼承多個(gè)接口。interfaceA{voidf();}interfaceB{voidg();}interfaceCextendsA{voidh();}interfaceDextendsB,C{voidi();}classEimplementsD{publicvoidf(){System.out.println("f()inD");}publicvoidg(){System.out.println("g()inD");}publicvoidh(){System.out.println("h()inD");}publicvoidi(){System.out.println("i()inD");}}publicclassInterfaceExtends{publicstaticvoidrunf(Aa){a.f();}publicstaticvoidrung(Bb){b.g();}publicstaticvoidrunh(Cc){c.h();}publicstaticvoidruni(Dd){d.i();}publicstaticvoidmain(String[]args){Ee=newE();runf(e);rung(e);runh(e);runi(e);}}5.5.1輸出一個(gè)學(xué)生信息,將Man類放入包mypackage,并用mypackage包中的TestMan類實(shí)現(xiàn)該Man類。packagemypackage;publicclassMan{Stringname;intage;publicMan(Stringn,inta){name=n;age=a;}publicvoidshow(){if(age<18)System.out.println(name+"的年齡是"+age);}}importmypackage.*;publicclassTestMan{publicstaticvoidmain(Stringargs[]){Mantest=newMan("李曉峰",15);test.show();}}5.5.2定義一個(gè)animal包,在包中添加兩個(gè)類,設(shè)計(jì)程序?qū)氚黙nimal,程序中可以使用其中所有的類。packagemypackage.animal;publicclassCAt{publicvoidcat(){System.out.println("miaomiao");}}packagemypackage.animal;publicclassDOG{publicvoiddog(){System.out.println("wangwang");}}importmypackage.animal.*;publicclassusepackage{publicstaticvoidmain(String[]args){CATa=newCAT();DOGb=newDOG();a.cat();b.dog();}}習(xí)題解答一、簡(jiǎn)答題1.類與對(duì)象的區(qū)別是什么。[解答]:Java程序的基本單位是類。對(duì)象是對(duì)事物的抽象,而類是對(duì)對(duì)象的抽象和歸納,找出事物的共性,把具有共同性質(zhì)的事物歸結(jié)為一類,得出一個(gè)抽象的概念——類。類是具有相同屬性和方法的一組對(duì)象的集合,類是在對(duì)象之上的抽象,對(duì)象則是類的具體化,一旦建立類之后,就可用它來(lái)建立許多你需要的對(duì)象。2.如何定義方法?在面向?qū)ο蟪绦蛟O(shè)計(jì)中方法有什么作用?[解答]:方法的定義由兩部分組成:方法聲明和方法體。方法聲明的基本格式如下:返回類型方法名(形式參數(shù)){…//方法體內(nèi)容}方法聲明包括方法名、返回類型和形式參數(shù),方法的小括號(hào)是方法的標(biāo)志;方法體為實(shí)現(xiàn)方法行為的Java語(yǔ)句。在面向?qū)ο蟪绦蛟O(shè)計(jì)中,方法所起的作用是完成對(duì)類和對(duì)象屬性操作。3.什么是修飾符?修飾符的種類有哪些?它們各有什么作用?[解答]:修飾符是用于限定類對(duì)象使用的權(quán)限,從而實(shí)現(xiàn)類中成員的信息隱藏。訪問(wèn)修飾符適用于類成員,而不是方法內(nèi)部的局部變量。Java常見(jiàn)的訪問(wèn)修飾符有這4種:private、default、protected和public。public可以被所有的類訪問(wèn)pravite只能被類本身訪問(wèn),其他類無(wú)法訪問(wèn)(3)protected可以被類本身、它的子類(包括同一個(gè)包中以及不同包中的子類)

(4)default屬于默認(rèn)的訪問(wèn)狀態(tài),可以被類本身和同一個(gè)包中的類訪問(wèn)4.成員變量的修飾符有哪些?各修飾符的作用是什么?答:(1)static(靜態(tài))變量由static修飾的變量稱為靜態(tài)變量,靜態(tài)變量是類固有的,可以直接引用(方法:類名.靜態(tài)變量名),其他成員變量?jī)H僅被聲明,只有等到生成實(shí)例對(duì)象后才存在,才可以被引用。(2)final(最終)變量一旦成員變量被聲明為final,在程序運(yùn)行中將不能被改變,即是一個(gè)常量。(3)transient(過(guò)渡)變量(不做要求)Java目前對(duì)transient修飾符沒(méi)有明確說(shuō)明,它一般用在對(duì)象序列化(objectserialization)上,說(shuō)明成員變量不許被序列化。(4)volatile(易失)變量(volatile聲明的成員變量為易失變量,用來(lái)防止編譯器對(duì)該成員進(jìn)行某種優(yōu)化。5.什么是抽象類?為什么要引入抽象類的概念?[解答]:抽象類是用來(lái)描述人們?cè)趯?duì)問(wèn)題領(lǐng)域進(jìn)行分析、設(shè)計(jì)中得出的抽象概念,是對(duì)一系列看上去不同,但是本質(zhì)上相同的具體概念的抽象。抽象類不具備實(shí)際功能,是專門設(shè)計(jì)用來(lái)讓子類繼承的類,把這些具有共同特征的方法抽象出來(lái),由子類負(fù)責(zé)這些抽象方法的實(shí)現(xiàn)細(xì)節(jié),而父類僅提供此方法的名稱和聲明。6.什么是繼承?如何定義繼承關(guān)系?[解答]:同類事物具有共同性,在同類事物中,每個(gè)事物又具有其特殊性。運(yùn)用抽象的原則舍棄對(duì)象的特殊性,抽取其共同性,則得到一個(gè)適應(yīng)于一批對(duì)象的類,這便是基類(父類),而把具有特殊性的類稱為派生類(子類),派生類的對(duì)象擁有其基類的全部或部分屬性與方法,稱作派生類對(duì)基類的繼承。派生類繼承基類,必須使用關(guān)鍵字extends來(lái)聲明。比如派生類B繼承基類A,派生類B定義的一般形式如下:classBextendsA{…}7.什么是多態(tài),如何實(shí)現(xiàn)多態(tài)?[解答]:多態(tài)是指一個(gè)程序中同名的不同方法共存的情況。這些方法同名的原因是它們的最終功能和目的都相同,但是由于在完成同一功能時(shí),可能遇到不同的具體情況,所以需要定義含不同的具體內(nèi)容的方法,來(lái)代表多種具體實(shí)現(xiàn)形式。多態(tài)通常是一個(gè)消息在不同的類中用不同的方法實(shí)現(xiàn)的。多態(tài)的實(shí)現(xiàn)是由消息的接收者確定一個(gè)消息應(yīng)如何解釋,而不是由消息的發(fā)送者確定,消息的發(fā)送者只需要指導(dǎo)另外的實(shí)例可以執(zhí)行一種特定操作即可。Java中提供兩種多態(tài)機(jī)制:方法重載與方法重寫(xiě)。第6章拓展訓(xùn)練:6.1.1.產(chǎn)生三個(gè)隨機(jī)數(shù)。classRandomTest{publicstaticvoidmain(Stringargs[]){System.out.println("Math.random()="+Math.random());System.out.println("Math.random()="+Math.random());System.out.println("Math.random()="+Math.random());}}6.1.2使用Integer類,返回返回保存指定的String的值的Integer對(duì)象。publicclassIntTest2{publicstaticvoidmain(String[]args){inti=Integer.valueOf("100").intValue();System.out.println(i);}}6.1.3利用Float類的方法進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,把float型轉(zhuǎn)換為doublepublicclassDoubleExample{publicstaticvoidmain(String[]args){floatf1=123.456f;FloatF1=newFloat(f1);doublea1=F1.doubleValue();intb1=F1.intValue();System.out.println("output:"+a1);System.out.println("output:"+b1);}}6.2.1計(jì)算距當(dāng)前100天后的日期時(shí)間,并輸出。importjava.util.*;classTestCalendar2{publicstaticvoidmain(String[]args){Calendarc1=Calendar.getInstance();intyear1=c1.get(Calendar.YEAR);intmonth1=c1.get(Calendar.MONTH);intday1=c1.get(Calendar.DAY_OF_MONTH);inthour1=c1.get(Calendar.HOUR);intminute1=c1.get(Calendar.MINUTE);System.out.println(year1+"年"+(month1+1)+"月"+day1+"日"+hour1+":"+minute1);c1.add(Calendar.DAY_OF_YEAR,100);intyear2=c1.get(Calendar.YEAR);intmonth2=c1.get(Calendar.MONTH);intday2=c1.get(Calendar.DAY_OF_MONTH);inthour2=c1.get(Calendar.HOUR);intminute2=c1.get(Calendar.MINUTE);System.out.println(year2+"年"+(month2+1)+"月"+day2+"日"+hour2+":"+minute2);}}6.2.2移除列表中索引在fromIndex(包括)和toIndex(不包括)之間的所有元素。importjava.util.ArrayList;publicclassTemp{publicstaticvoidmain(String[]args){ArrayListal=newArrayList(11);for(inti=0;i<10;i++){al.add("string"+(i+1));}printList(al);System.out.println("http://insertoneelement");//1為你指定的位置al.add(1,"stringinsert");printList(al);System.out.println("http://removeoneelement");al.remove(1);printList(al);}publicstaticvoidprintList(ArrayListal){//輸出ArrayList的方法System.out.print("currentlist:|");for(inti=0;i<al.size();i++){System.out.print(al.get(i)+"");}System.out.println("|");}}6.2.3用Hashtable來(lái)檢驗(yàn)隨機(jī)數(shù)的隨機(jī)性。importjava.util.*;classCounter{inti=1;publicStringtoString(){returnInteger.toString(i);}}classStatistics{publicstaticvoidmain(String[]args){Hashtableht=newHashtable();for(inti=0;i<10000;i++){//Produceanumberbetween0and20:Integerr=newInteger((int)(Math.random()*20));if(ht.containsKey(r))((Counter)ht.get(r)).i++;elseht.put(r,newCounter());}System.out.println(ht);}}6.2.4Map接口的使用importjava.util.*;publicclassMapDemo{publicstaticvoidmain(String[]args){Mapmap=newHashMap();map.put("1","value1");map.put("2","value2");map.put("3","value3");map.put("4","value4");System.out.println(map.get("1"));SetKeySet=map.KeySet();for(Iteratoriterator=KeySet.iterator();iterator.hasNext();)System.out.println(iterator.next());Collectionvalues=map.values();for(Iteratoriterator=KeySet.iterator();iterator.hasNext();)System.out.println(iterator.next());SetentrySet=map.entrySet();for(Iteratoriterator=KeySet.iterator();iterator.hasNext();)System.out.println(iterator.next());}}習(xí)題解答一、編程題1.將“2010-03-10”格式的日期字符串轉(zhuǎn)換成“2010年03月10日參考程序:importjava.util.*;importjava.text.*;publicclassTestDateFormat{publicstaticvoidmain(String[]args){SimpleDateFormatsdf1=newSimpleDateFormat("yyyy-mm-dd");SimpleDateFormatsdf2=newSimpleDateFormat("yyyy年mm月dd日");try{Dated=sdf1.parse("2010-03-10");System.out.println(sdf2.format(d));}catch(Exceptione){System.out.println(e.getMessage());}}}2.使用Integer類,將字符串參數(shù)作為有符號(hào)的十進(jìn)制整數(shù)進(jìn)行解析并輸出。publicclassIntTest3{publicstaticvoidmain(String[]args){inti=Integer.parseInt("99");System.out.println(i);}}第7章【7.1.1拓展訓(xùn)練】1、設(shè)計(jì)一個(gè)界面,使用一組按鈕和一個(gè)標(biāo)簽組件,當(dāng)單擊按鈕時(shí),標(biāo)簽顯示單擊按鈕上的文字內(nèi)容。importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;classCh71extendsJFrameimplementsActionListener{String[]str={"a","b","c","d","e", "f","g","h","i","j","k","l"}; JButton[]jbtn; JLabeljb=newJLabel(); publicCh71() { setLayout(newFlowLayout()); JButton[]jbtn=newJButton[12]; for(inti=0;i<12;i++) { jbtn[i]=newJButton(str[i]); add(jbtn[i]); jbtn[i].addActionListener(this); } Fontf=newFont("宋體",Font.BOLD,25);//創(chuàng)建字體對(duì)象 jb.setFont(f); add(jb); setTitle("拓展訓(xùn)練一"); setBounds(100,100,300,180); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } publicvoidactionPerformed(ActionEvente) {if(e.getSource()instanceofJButton){ JButtonjbt=(JButton)e.getSource(); jb.setText(""+jbt.getText()+"");} } publicstaticvoidmain(String[]args) { newCh71(); }}【7.2.1拓展訓(xùn)練】1、界面上放置一個(gè)按鈕和標(biāo)簽,當(dāng)單擊按鈕時(shí),標(biāo)簽顯示單擊按鈕的次數(shù)。importjava.awt.event.*;importjavax.swing.*;importjava.awt.*;publicclassCh72extendsJFrameimplementsActionListener{JButtonbtn=newJButton("ok");JLabeljb=newJLabel("");intcount=0;publicCh72(){this.setLayout(newFlowLayout());this.add(jb);this.add(btn);this.setTitle("Hello!");btn.addActionListener(this);this.setBounds(100,100,230,180);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}publicvoidactionPerformed(ActionEvente){count++; jb.setText("Youhaveclickedthebutton"+count+"times!");}publicstaticvoidmain(String[]args){newCh72();}}【7.2.2拓展訓(xùn)練】1、設(shè)計(jì)一個(gè)窗體,當(dāng)窗體活動(dòng)(即為當(dāng)前窗體)時(shí),窗體上顯示“我在這里!哈哈!”;當(dāng)窗體不活動(dòng)時(shí),窗體上不顯示信息。importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;classActiveWinextendsJFrameimplementsWindowListener{ JLabeljlbl=newJLabel(); publicActiveWin(){ add(jlbl); addWindowListener(this);//注冊(cè)監(jiān)聽(tīng)器,監(jiān)聽(tīng)本身setTitle("測(cè)試窗體事件"); setBounds(100,100,300,200); setVisible(true); }//實(shí)現(xiàn)接口中的方法windowActivated(),窗體是活動(dòng)的publicvoidwindowActivated(WindowEvente){ jlbl.setText("我在這里!哈哈!"); this.repaint(); } //實(shí)現(xiàn)接口中的方法windowDeactivated(),窗體是不活動(dòng)的 publicvoidwindowDeactivated(WindowEvente){ jlbl.setText("");this.repaint(); } publicvoidwindowDeiconified(WindowEvente){ } publicvoidwindowIconified(WindowEvente){ } publicvoidwindowOpened(WindowEvent

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論