實(shí)驗(yàn)二數(shù)組,面向?qū)ο蟪绦蛟O(shè)計(jì)入門_第1頁(yè)
實(shí)驗(yàn)二數(shù)組,面向?qū)ο蟪绦蛟O(shè)計(jì)入門_第2頁(yè)
實(shí)驗(yàn)二數(shù)組,面向?qū)ο蟪绦蛟O(shè)計(jì)入門_第3頁(yè)
實(shí)驗(yàn)二數(shù)組,面向?qū)ο蟪绦蛟O(shè)計(jì)入門_第4頁(yè)
實(shí)驗(yàn)二數(shù)組,面向?qū)ο蟪绦蛟O(shè)計(jì)入門_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

湖北工業(yè)大學(xué)工程技術(shù)學(xué)院實(shí)驗(yàn)報(bào)告課程名稱:JAVA實(shí)驗(yàn)內(nèi)容:實(shí)驗(yàn)二數(shù)組面向?qū)ο蟮恼n程設(shè)計(jì)入門學(xué)院:工程技術(shù)學(xué)院專業(yè)班級(jí):11gb軟件2班教師:程學(xué)先成績(jī):一、實(shí)驗(yàn)?zāi)康模?、學(xué)習(xí)與掌握內(nèi)部類、外部類、抽象類、靜態(tài)方法、實(shí)例化、this、接口等的概念與應(yīng)用方法2、掌握作用域的概念,protected、private、private各自影響范圍3、學(xué)習(xí)數(shù)組定義與程序設(shè)計(jì)方法4、掌握判斷素?cái)?shù)、使用Calendar日歷類、產(chǎn)生隨機(jī)數(shù)、矩陣及其乘法、楊輝三角形等基本算法及程序設(shè)計(jì)方法5、學(xué)習(xí)并掌握遞歸程序設(shè)計(jì)方法6、學(xué)習(xí)選擇法排序、直接選擇法排序、插入法排序、冒泡法排序的方法與程序設(shè)計(jì)方法二、實(shí)驗(yàn)內(nèi)容:1、執(zhí)行下述程序,說明各程序功能,如果題后有問題,按問題進(jìn)行設(shè)計(jì)并總結(jié)。將每題運(yùn)行結(jié)果復(fù)制粘貼到一個(gè)Word文件中。1)判斷從100到500之間的數(shù)那些是素?cái)?shù),那些不是素?cái)?shù)。如果***是素?cái)?shù),就顯示***是素?cái)?shù),否則顯示***不是素?cái)?shù)。importjava.util.*;publicclassa1{staticlongPrimenumber(intn){ longs1=0,i=2,m=(long)Math.sqrt(n); while(i<=m&&s1==0){ if((n%i)==0)s1=1; elsei=i+1;}returns1;}publicstaticvoidmain(String[]args){for(inti=100;i<=500;i++) if(Primenumber(i)==0)System.out.println(""+i+"是一個(gè)素?cái)?shù)"); elseSystem.out.println(""+i+"不是素?cái)?shù)"); }}//掌握靜態(tài)方法的基本結(jié)構(gòu)及是如何調(diào)用的。將判斷素?cái)?shù)的程序改寫為方法,再在主程序中調(diào)用完成本題2)對(duì)如下程序進(jìn)行實(shí)驗(yàn),試去掉this.運(yùn)行,再改用cClass1.,看報(bào)錯(cuò)的情況,總結(jié)this.的使用方法,什么時(shí)候不加前綴?什么時(shí)候加類名.或?qū)ο竺??什么時(shí)候必須用this.?classcClass1{publicstaticintx;//類變量voidcClass1(intn){//構(gòu)造方法this.x=0;//this.x表示類變量x,如果成員方法非static,就要用this.}staticlongcClass1(intn,intk){//重構(gòu)構(gòu)造方法x=n;returnx*3;}publicstaticvoidsetPoint(intx,inty){x=x;//setPoint被申明為static,就不能用this.//左、右面x都是形式參數(shù),若局部變量與類的成員變量同名,則類的成員變量被隱藏。System.out.println("x1="+x+"cClass1.x="+cClass1.x);}publicstaticvoidmain(String[]args){setPoint(100,200);System.out.println("x2="+cClass1.x+"x="+x);cClass1.cClass1(50,30);//調(diào)用重構(gòu)構(gòu)造方法System.out.println("x3="+x+"cClass1.x="+cClass1.x+"cClass1.cClass1(50,30)="+cClass1.cClass1(50,30));//前面如果有cClass1.x=x,顯示100,否則顯示0}}3)關(guān)于作用域的實(shí)驗(yàn)。將第一句的protected改為private或private,總結(jié)各自影響范圍。classPoint0{protectedintx;privateinty;publicvoidsetPoint(intx,inty){this.x=x;//x為非靜態(tài)變量,不能用Point.xthis.y=y;Point0Point1=newPoint0();//新建對(duì)象,尚未調(diào)用setPointSystem.out.println(“Point1.x=“+Point1.x);}}publicclassEx4_6_1{publicstaticvoidmain(String[]args){Point0point2=newPoint0();//新生成對(duì)象,該對(duì)象下面調(diào)用setPointpoint2.x=200;//在Point中如果x被定義為private,將報(bào)錯(cuò)//Point.y=100;//錯(cuò)誤point2.setPoint(100,100);//如果point2改為point將報(bào)錯(cuò)System.out.println(“Point2.x=“+point2.x);}}//結(jié)果顯示Point1.x=0Point2.x=1004)執(zhí)行下列程序,總結(jié)抽象類的定義方法,使用要點(diǎn)。abstractclassA{//抽象類,不能實(shí)例化abstractintmin(intx,inty);//抽象類可以有抽象方法,不能定義方法體intmax(intx,inty){returnx>y?x:y;}}classBextendsA{//建立抽象類的子類intmin(intx,inty){//在A中min被聲明為abstract,且因此未有實(shí)現(xiàn)語句,在子類中必須實(shí)現(xiàn)returnx>y?x:y;}}publicclassEx4_11{publicstaticvoidmain(String[]args){Bb1=newB();//由抽象類的子類派生對(duì)象System.out.println(b1.max(3,19));//調(diào)用該子類繼承的抽象類的方法}}2、參考上面的程序,編寫程序使完成下列題目要求的功能并上機(jī)實(shí)現(xiàn)。將程序代碼集中存放到一個(gè)WORD文件中,同時(shí)將運(yùn)行結(jié)果的顯示內(nèi)容復(fù)制粘貼附在程序代碼后面。1)求100以內(nèi)的所有素?cái)?shù)。要求只顯示所有素?cái)?shù),每行顯示10個(gè)素?cái)?shù)整齊排列。以下是程序核心部分,請(qǐng)補(bǔ)充完整后調(diào)試并運(yùn)行。for(intn=2;n<=50;n++){inti=0; longm=(long)Math.sqrt(n);for(i=2;i<=(int)m;i++)if((n%i)==0)break;if(i>(int)m)System.out.print(""+n+"");}2)下面是選擇法排序的主要部分,求編寫程序隨機(jī)生成100個(gè)整型數(shù)據(jù),再用選擇法排序。以下是程序核心部分,請(qǐng)補(bǔ)充完整后調(diào)試并運(yùn)行。 for(inti=0;i<n.length-1;i++) { intk=i; for(intj=i+1;j<n.length;j++) { if(n[j]>n[k])//選擇i之后最大的{ inttemp=n[k]; n[k]=n[j]; n[j]=temp;} } }3)將本程序修改為直接選擇法排序的程序。寫出實(shí)現(xiàn)程序。4)下面是插入法排序的主要部分,求編寫程序隨機(jī)生成100個(gè)整型數(shù)據(jù),再用插入法排序。int[]arr=newint[100];arr[0]=n[0];for(intj=1;j<n.length;j++){arr[j]=n[j];for(inti=j;i>0;i--){if(arr[i]>arr[i-1])break;inta=arr[i]; arr[i]=arr[i-1]; arr[i-1]=a;}}5)Calendar類是有關(guān)日歷數(shù)據(jù)的類。參考3-11題(包括題后說明),利用Calendar類設(shè)計(jì)一個(gè)程序,顯示程序當(dāng)前執(zhí)行時(shí)間的時(shí)、分、秒值。3、執(zhí)行以下程序,總結(jié)其算法與程序設(shè)計(jì)方法。將每題運(yùn)行結(jié)果復(fù)制粘貼到同一個(gè)Word文件中。1)編程求滿足下列不等式的最小自然數(shù)n的值。importjava.util.*;publicclassEx2_14{ publicstaticvoidmain(String[]args){ doubles=0;intn=1;Stringstr; do{ s=s+1.0/n; n++; }while(s<=5); str="和數(shù)s="+Double.toString(s)+"\n\n"; str=str+"循環(huán)次數(shù)n="+Integer.toString(n);System.out.println(str); }}2)隨機(jī)生成一組整型數(shù)據(jù),再用冒泡法將數(shù)組排序顯示。publicclassEx3_2{publicstaticvoidmain(Stringargs[]){int[]n=newint[100];for(inti=0;i<n.length;i++)n[i]=(int)(Math.random()*90)+10;//產(chǎn)生隨機(jī)數(shù)并強(qiáng)制轉(zhuǎn)為二位整型數(shù)for(inti=0;i<n.length;i++){//排序for(intj=0;j<(n.length-i-1);j++)if(n[j]>n[j+1]){intk=n[j];//次序不對(duì)交換位置n[j]=n[j+1];n[j+1]=k;}}for(inti=0;i<n.length;i++){//顯示if((i+1)%10!=0)System.out.print(""+n[i]+"");elseSystem.out.println(n[i]);}}}3)隨機(jī)生成兩個(gè)矩陣,然后將兩個(gè)矩陣相乘。矩陣乘法:設(shè)A=[aij]m×n,B=[bij]n×s;其中,m×n中m表示a行數(shù),n表示列數(shù);n×s中n表示b行數(shù),s表示列數(shù);那么,A×B的積為:C=[cij]m×s其中,Cij=ai1b1j+ai2b2j+……+ainbnj(i=1,2,……,m;j=1,2,……,s)例如,C11=a11b11+a12b21+……+a1nbn1又例如,C12=a11b12+a12b22+……+a1nbn2C21=a21b11+a22b21+……+a2nbn1如果改為從0開始計(jì)數(shù),那么:C00=a00b00+a01b10+……+a0nbn0C01=a00b01+a01b11+……+a0nbn1C10=a10b00+a11b10+……+a1nbn0首先看懂上面算法,再思考程序應(yīng)當(dāng)如何設(shè)計(jì),之后上機(jī)操作,最后看懂程序設(shè)計(jì)方法。publicclassa1{publicstaticvoidmain(Stringargs[]){inta[][]=newint[3][4];//動(dòng)態(tài)初始化一個(gè)二維數(shù)組intb[][]=newint[4][3];//動(dòng)態(tài)初始化一個(gè)二維數(shù)組intc[][]=newint[3][3];//動(dòng)態(tài)初始化一個(gè)二維數(shù)組for(inti=0;i<3;i++)for(intj=0;j<4;j++){//隨機(jī)生成矩陣數(shù)據(jù)a[i][j]=(int)(Math.random()*90)+10;}for(inti=0;i<4;i++)for(intj=0;j<3;j++){b[i][j]=(int)(Math.random()*90)+10;}System.out.println("第一個(gè)矩陣數(shù)據(jù):");for(inti=0;i<3;i++){for(intj=0;j<4;j++)System.out.print(""+a[i][j]+"");System.out.println("");}System.out.println("第二個(gè)矩陣數(shù)據(jù):");for(inti=0;i<4;i++){for(intj=0;j<3;j++)System.out.print(""+b[i][j]+"");System.out.println("");}for(inti1=0;i1<3;i1++)//0到m-1;for(intj=0;j<3;j++){//0到s-1;c[i1][j]=0;//計(jì)算乘積for(intk=0;k<4;k++)c[i1][j]=c[i1][j]+a[i1][k]*b[k][j];}System.out.println("二個(gè)矩陣之積:");//顯示結(jié)果for(inti1=0;i1<3;i1++){for(intj=0;j<3;j++)System.out.print(""+c[i1][j]+"");System.out.println("");}}}4)創(chuàng)建楊輝三角形。分析:楊輝三角形中的各行是二項(xiàng)式(a+b)n展開式中各項(xiàng)的系數(shù)。注意到注意到第一列全1如果用i表示行,j表示列,那么每行從第2列起有:aij=a(i-1)(j-1)+a(i-1)jimportjava.util.Scanner;publicclassEx3_5{publicstaticvoidmain(String[]args){int[][]a=newint[9][9];//假設(shè)打印9行,各元素自動(dòng)初始化為0a[0][0]=1;//最上面第一個(gè)數(shù)for(inti=1;i<9;i++){//從第2行開始遞推a[i][0]=1;//第i行的數(shù)據(jù)個(gè)數(shù)等于ifor(intj=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];}for(inti=0;i<9;i++){for(intj=0;j<i;j++)System.out.print(""+a[i][j]+"");System.out.println("");}}}5)將上面程序改由遞歸求解,分析遞歸的可能性及程序?qū)崿F(xiàn)方法importjava.util.Scanner;publicclassEx3_5_1{//非主方法必須聲明靜態(tài)staticlongc(intn,intk){if(k<=0||k>=n)return1;return(c(n-1,k)+c(n-1,k-1));}publicstaticvoidmain(String[]args){//主方法,可以不加publicstaticfor(inti=0;i<=9;i++){for(intj=0;j<=i;j++)System.out.print(c(i,j)+"\t");System.out.print("\n");}}}6)將上題中方法c設(shè)計(jì)為內(nèi)部類的方法publicclassEx3_5_4{//主類staticclassc0{//類Ex3_5_4的內(nèi)部類,加staticstaticlongc0(intn,intk){//構(gòu)造方法,也可改為非構(gòu)造方法if(k<=0||k>=n)return1;return(c0(n-1,k)+c0(n-1,k-1));}}publicstaticvoidmain(String[]args){for(inti=0;i<=9;i++){for(intj=0;j<=i;j++)System.out.print(c0.c0(i,j)+"\t");System.out.print("\n");//上面引用c0(i,j)要求c0(i,j)為靜態(tài)}}}//將方法c改為內(nèi)部類c0的方法c0(靜態(tài)方法),類c0的前面也要加static。編譯時(shí)生成Ex3_5_1$c0.class。7)將內(nèi)部類改為外部類classc0_1{//外部類,不加staticstaticlongc0_1(intn,intk){if(k<=0||k>=n)return1;return(c0_1(n-1,k)+c0_1(n-1,k-1));}}publicclassEx3_5_5{//主類publicstaticvoidmain(String[]args){for(inti=0;i<=9;i++){for(intj=0;j<=i;j++)System.out.print(c0_1.c0_1(i,j)+"\t");System.out.print("\n");//上面引用c0(i,j)要求c0(i,j)為靜態(tài)}}}//將內(nèi)部類c0改外部類c0_1,方法c0_1設(shè)計(jì)為靜態(tài)方法。8)同一目錄下建二個(gè)類文件,調(diào)用靜態(tài)方法(類方法)遞歸。源程序文件Ex3_5_2.java:publicclassEx3_5_2{publicstaticvoidmain(String[]args){for(inti=0;i<=9;i++){for(intj=0;j<=i;j++)System.out.print(c.c(i,j)+"\t");System.out.print("\n");//上面引用c(i,j)要求c(i,j)為靜態(tài)}}}源程序文件c.javaclassc{staticlongc(intn,intk){if(k<=0||k>=n)return1;return(c(n-1,k)+c(n-1,k-1));}}對(duì)Ex3_5_1.java編譯,生成Ex3_5_1.class和c.class二個(gè)類文件9)實(shí)例化classcClass{longc1(intn,intk){if(k<=0||k>=n)return1;return(c1(n-1,k)+c1(n-1,k-1));}}publicclassEx3_5_3{publicstaticvoidmain(String[]args){cClasscObject=newcClass();//實(shí)例化:建立類cClass的對(duì)象for(inti=0;i<=9;i++){for(intj=0;j<=i;j++)System.out.print(cObject.c1(i,j)+"\t");System.out.print(“\n”);//上面引用c(i,j)不再要求c(i,j)為靜態(tài)}}}10)改為接口實(shí)現(xiàn)interfacecface{//定義接口longc(intn,intk);//方法不許實(shí)現(xiàn),即不能有方法體,用分號(hào)結(jié)束}publicclassEx3_5_6implementscface{//調(diào)用接口//必須實(shí)現(xiàn)接口中所有方法,且方法的名字、類型、參數(shù)個(gè)數(shù)及類型必須與接口中的完全一致publiclongc(intn,intk){//不要忘了publicif(k<=0||k>=n)return1;return(c(n-1,k)+c(n-1,k-1));}publicstaticvoidmain(String[]args){for(inti=0;i<=9;i++){for(intj=0;j<=i;j++)System.out.print(c.c(i,j)+"\t");//上面引用接口中c(n,k)要求c(n,k)為publicSystem.out.print("\n");}}}比較以上各題,全面了解面向?qū)ο蟮某绦蛟O(shè)計(jì)主要的語言元素,學(xué)習(xí)各概念的意義、應(yīng)用方法,特別注意其區(qū)別與設(shè)計(jì)要點(diǎn)。11)畫出實(shí)驗(yàn)當(dāng)天所在月的日歷表。importjava.util.Calendar;publicclassEx4_27{ /** *@paramargs */ publicstaticvoidmain(String[]args){ System.out.println("日一二三四五六"); Calendarcalendar=Calendar.getInstance(); intm=9; calendar.set(2012,m-1,1);//設(shè)置日歷表起始年月日的值 //在表中該日期算作該月1日在列出日歷 intday_of_week=calendar.get(Calendar.DAY_OF_WEEK)-1; System.out.print(day_of_week);//該日期是星期幾? Stringa[]=newString[day_of_week+31]; for(inti=0;i<day_of_week;i++){ a[i]="*"; } for(inti=day_of_week,n=1;i<day_of_week+31;i++){ if(n<=9) a[i]=String.valueOf(n)+""; else a[i]=String.valueOf(n); n++; } for(inti=0;i<a.length;i++){ if(i%7==0) System.out.println(""); System.out.print(""+a[i]); } }}//返回當(dāng)前時(shí)間小時(shí)數(shù):calendar.get(Calendar.HOUR_OF_DAY)//例如顯示當(dāng)前小時(shí)數(shù)語句:System.out.println(calendar.get(Calendar.HOUR_OF_DAY));//返回當(dāng)前時(shí)間分鐘數(shù):calendar.get(Calendar.MINUTE)//返回當(dāng)前時(shí)間秒數(shù):calendar.get(Calendar.SECOND)三、實(shí)驗(yàn)記錄1.1運(yùn)行結(jié)果:程序功能:判斷從100到500之間的數(shù)那些是素?cái)?shù),那些不是素?cái)?shù)。改后程序清單:importjava.util.*;classA{ staticlongPrimenumber(intn){ longs1=0,i=2,m=(long)Math.sqrt(n); while(i<=m&&s1==0){ if((n%i)==0)s1=1; elsei=i+1;}returns1;}}publicclassa1{publicstaticvoidmain(String[]args){for(inti=100;i<=500;i++) if(A.Primenumber(i)==0)System.out.println(""+i+"是一個(gè)素?cái)?shù)"); elseSystem.out.println(""+i+"不是素?cái)?shù)"); }}1.2運(yùn)行結(jié)果:x1=100cClass1.x=0x2=0x=0x3=50cClass1.x=50cClass1.cClass1(50,30)=150程序功能:驗(yàn)證this的使用1.3運(yùn)行結(jié)果:Point1.x=0Point2.x=100程序功能:驗(yàn)證成員變量的作用域1.4運(yùn)行結(jié)果:程序功能:比較大小,抽象類的繼承2.1程序清單:publicclassa2_1{ publicstaticvoidmain(String[]args){ intnum=0; for(intn=2;n<=100;n++){inti=0;longm=(long)Math.sqrt(n);for(i=2;i<=(int)m;i++) if((n%i)==0) break;if(i>(int)m){ System.out.print(""+n+""); num++;}if(num>=10){ System.out.print("\n"); num=0;}} }}運(yùn)行結(jié)果:2357111317192329313741434753596167717379838997討論分析:質(zhì)數(shù)的計(jì)算2.2程序清單:importjava.util.Random;publicclassa2_1{ publicstaticvoidmain(String[]args){ Randomr=newRandom(); intn[]=newint[100]; for(inti=0;i<100;i++) n[i]=r.nextInt(200); System.out.println("原數(shù)組:"); for(inti=0;i<100;i++) System.out.print(""+n[i]); for(inti=0;i<n.length-1;i++) { intk=i; for(intj=i+1;j<n.length;j++) { if(n[j]>n[k])//選擇i之后最大的 { inttemp=n[k]; n[k]=n[j]; n[j]=temp; } } } System.out.println("\n排序后:"); for(inti=0;i<100;i++) System.out.print(""+n[i]); }}運(yùn)行結(jié)果:原數(shù)組:9414082137122124803114371580196761843919045148149173196141130123115291611331674464121681231292156156152156691027288131351803977195175341588910544601295180156126150145162112676116439130106558917766208655155126153183134821241712414717963342971487519115293排序后:1961961951911901841831801801791771751731711681671641621611581561561561551531521521501491481481471451431411401371351341331301301291261261241241231231221151121061051029795949389898886828280777675727169676664636160585655554544443939393434312924212013121220討論分析:使用random產(chǎn)生隨機(jī)數(shù)2.4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論