中南软件java实验报告2.docx
- 文档编号:29593331
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:19
- 大小:48.19KB
中南软件java实验报告2.docx
《中南软件java实验报告2.docx》由会员分享,可在线阅读,更多相关《中南软件java实验报告2.docx(19页珍藏版)》请在冰豆网上搜索。
中南软件java实验报告2
中南大学软件学院实验报告
课程名称Java面向对象程序设计SSD3
实验项目名称实验2《一维数组》
学生姓名专业班级学号
实验成绩日期
实验学时:
2
每组人数:
1
实验类型:
1(1:
基础性2:
综合性3:
设计性4:
研究性)
实验要求:
1(1:
必修2:
选修3:
其它)
实验类别:
2(1:
基础2:
专业基础3:
专业4:
其它)
一、实验目的
学习一维数组的用法。
二、实验内容
1.(P182,6.3)编写程序,读取1-100之间的整数,然后计算每个数出现的次数。
假定输入是以0结束的。
以下是程序运行示例:
输入1-100之间的整数:
255432320[回车]
2出现2次
3出现1次
4出现1次
5出现2次
23出现1次
代码实现:
packagejava_shiyan_two;
importjava.util.Scanner;
publicclassJscs_6_3{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
System.out.print("Entertheintegersbetween1and100:
");
intlist[]=newint[88];
Scannerinput=newScanner(System.in);
for(inti=0;i<=list.length;i++){
list[i]=input.nextInt();
if(list[i]==0){
break;
}
if(list[i]<1||list[i]>100){
System.out.print("WRONG");
continue;
}
}
int[]list1=insertionSort(list);
cout(list1);
}
/*
*数组排序
*/
publicstaticint[]insertionSort(int[]list){
int[]result=newint[list.length];
for(inti=0;i intc=list[i]; intk; for(k=i-1;k>=0&&list[k]>c;k--){ list[k+1]=list[k]; } list[k+1]=c; } for(intd=0;d result[d]=list[d]; } returnresult; } /* *打印数组 */ publicstaticvoidPrintln(int[]list){ for(intq=0;q System.out.print(list[q]+""); } } publicstaticvoidcout(int[]list){ for(intm=0;m if(list[m]! =0){ if(count(list,list[m])==1){ System.out.println(list[m]+"occurs1time"); } else{ System.out.println(list[m]+"occurs"+count(list,list[m])+"times"); m=m+count(list,list[m])-1; } } } } publicstaticintcount(int[]list,inta){ intc=0; for(inti=0;i if(a==list[i]){ c++; } } returnc; } } 结果截图与分析: 该结果满足实验要求 2.(P183,6.10)编写一个方法,求出整数数组中最小元素的下标。 如果这样的元素个数大于1,则返回最小下标。 使用下面的方法头: publicstaticvoidindexOfSmallestElement(double[]array) 编写测试程序,提示用户输入10个数字,调用这个方法,返回最小元素的下标,然后显示这个下标值。 代码实现: packagejava_shiyan_two; importjava.util.Scanner; publicclassMinX_6_10{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub System.out.print("Pleaseenter10numbers: "); doublelist[]=newdouble[10]; Scannerinput=newScanner(System.in); for(inti=0;i list[i]=input.nextDouble(); } inta=indexOfSmallestElement(list); System.out.print(a); } publicstaticintindexOfSmallestElement(double[]list){ inta=0; for(intindex=0;index inty=0; for(inti=0;i if(list[index]<=list[i]){ y++; }; if(y==10){ a=index; break; } } } returna; } } 结果截图与分析: 该结果满足实验要求 3.(P182,6.5)编写程序,读入10个数并显示互不相同的数(即一个数出现多次,但仅显示一次)。 提示,读入一个数,如果它是一个新数,则将它存储在数组中,如果该数已经在数组中,则忽略它。 输入之后,数组包含的都是不同的数。 以下是运行示例: 输入10个整数: 1232163452 互不相同的数为: 123645 代码实现: packagejava_shiyan_two; importjava.util.Scanner; publicclassPrintDifferent_6_5{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub System.out.print("Pleaseenter10numbers: "); doublelist[]=newdouble[10]; Scannerinput=newScanner(System.in); doublea=0; intc=list.length; for(inti=0;i a=input.nextDouble(); if(Find(list,a)==-1){ list[i]=a; //System.out.print(a); } else{ i--; c--; } } Println(list,c); } publicstaticintFind(double[]list,doublea){ for(inti=0;i if(a==list[i]){ returni; } }return-1; } publicstaticvoidPrintln(double[]list,intn){ for(intq=0;q System.out.print(list[q]+""); } } } 结果截图与分析: 该结果满足实验要求 4.(P186,6.27)如果两个数组list1和list2内容相同,那么就说它们是相同的。 使用下面的方法头编写一个方法,如果list1和list2是相同的,该方法就返回true: publicstaticBooleanequal(int[]list1,int[]list2) 编写一个测试程序,提示用户输入两个整数数列,然后显示它们两个是否相同。 以下是运行示例。 注意输入的第一个数字表示数列中元素的个数。 【该题可在4月23日的理论课后再完成】 输入list1: 525661 输入list2: 552616 这两个数列是相同的 输入list1: 555661 输入list2: 525616 这两个数列是不同的 代码实现: packagejava_shiyan; importjava.util.Scanner; publicclassSamelist_6_27{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub System.out.print("pleaseenterthelengthoflistone"); Scannerinput=newScanner(System.in); intn1=input.nextInt(); System.out.print("pleaseenterthelengthoflisttwo"); intn2=input.nextInt(); int[]list1=newint[n1]; int[]list2=newint[n2]; System.out.print("Pleaseenterthelistone"); for(inti=0;i list1[i]=input.nextInt(); } System.out.print("Pleaseenterthelisttwo"); for(inti=0;i list2[i]=input.nextInt(); } if(equal(list1,list2)){ System.out.print("Twolistsareidentical"); } else{ System.out.print("Twolistsarenotidentical"); } } publicstaticbooleanequal(int[]list1,int[]list2){ booleancharge=true; int[]listOne=newint[list1.length]; listOne=insertionSort(list1); int[]listTwo=newint[list2.length]; listTwo=insertionSort(list2); if(list1.length! =list2.length){ charge=false; } else{ for(intj=0;j if(listOne[j]! =listTwo[j]){ charge=false; } } } returncharge; } /* *数组排序 */ publicstaticint[]insertionSort(int[]list){ int[]result=newint[list.length]; for(inti=0;i intc=list[i]; intk; for(k=i-1;k>=0&&list[k]>c;k--){ list[k+1]=list[k]; } list[k+1]=c; } for(intd=0;d result[d]=list[d]; } returnresult; } } 结果截图与分析: 该结果满足实验要求 5.(附加题5.31信用卡号的合法性,可选做)信用卡号遵循下面的模式。 一个信用卡号必须是13-16位的整数。 它的开头必须是: 4,指visa卡 5,指master卡 37,指AmericanExpress卡 6,指Discovery卡 在1954年,IBM的HansLuhn提出一种算法,该算法可以验证信用卡号的有效性。 这个算法在确定输入的卡号是否正确,或者这张信用卡是否能被正确扫描是非常有用的。 该方法通常被称为Luhn检测或Mod10检测,描述如下(假设卡号是4388576018402626) (1)从右至左对偶数位上的数字翻倍。 如果数字翻倍后是一个两位数,那么就将这两位加在一起得到一位数。 2*2=4 2*2=4 4*2=8 1*2=2 6*2=12(1+2=3) 5*2=10(1+0=1) 8*2=16(1+6=7) 4*2=8 (2)将第一步得到的所有一位数相加。 4+4+8+2+3+1+7+8=37 (3)将卡号里从右往左奇数位上所有数字相加。 6+6+0+8+0+7+8+3=38 (4)将第二步和第三步得到的结果相加。 37+38=75 (5)如果第四步得到的结果能被10整除,则卡号是合法的,否则是不合法的。 75%10! =0 编写程序,提示用户输入一个long型整数的信用卡号码,显示这个数字是合法还是非法的。 使用下面的方法设计程序: /*Returntrueifthecardnumberisvalid*/ publicstaticbooleanisValid(longnumber) /*Gettheresultfromstep2*/ publicstaticintsumOfDoubleEvenPlace(longnumber) /*Returnthisnumberifitisasingledigit,otherwisereturnthesumofthetwodigits*/ publicstaticintgetDigit(intnumber) /*Returnsumofoddplacedigitsinnumber*/ publicstaticintsumOfOddPlace(longnumber) /*Returntrueifthedigitdisaprefixfornumber*/ publicstaticbooleanprefixMatched(longnumber,intd) /*Returnthenumberofdigitsind*/ publicstaticintgetSize(longd) /*Returnthefirstknumberofdigitsfromnumber.Ifthenumberofdigitsinnumberislessthank,returnnumber*/ publicstaticlonggetPrefix(longnumber,intk) 代码实现: packagejava_shiyan; importjava.util.Scanner; publicclassJudgeID_5_31{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub System.out.print("PleaseentertheID: "); Scannerinput=newScanner(System.in); longnumber=input.nextLong(); if(isValid(number)){ System.out.print("TheIDcardisLEGALE"); } else{ System.out.print("TheIDcardisNOTLEGALE"); } } publicstaticbooleanisValid(longnumber){ booleancharge=true; if(getSize(number)<13||getSize(number)>16){ charge=false; } if((sumOfDoubleEvenPlace(number)+sumOfOddPlace(number))%10! =0){ charge=false; } if(! prefixMatched(number)){ charge=false; } returncharge; } publicstaticintsumOfDoubleEvenPlace(longnumber){ longsum=0; if(getSize(number)%2==0){ for(intr=2;r<=getSize(number);r=r+2){ if(getPrefix(number,r)<5&&getPrefix(number,r)>=0){ sum=sum+getPrefix(number,r)*2; } else{ sum=sum+getPrefix(number,r)*2-9; } } } else{ for(intr=2;r<=getSize(number);r=r+2){ sum=sum+getPrefix(number,r); } } intn=(int)sum; //System.out.print(n+""); returnn; } publicstaticintsumOfOddPlace(longnumber){ longsum=0; if(getSize(number)%2==0){ for(intr=1;r sum=sum+getPrefix(number,r); } } else{ for(intr=1;r sum=sum+getPrefix(number,r); } } intn=(int)sum; //System.out.print(n+""); returnn; } publicstaticlonggetPrefix(longnumber,intk){ doublet=(number%(Math.pow(10,k))-number%(Math.pow(10,k-1)))/(Math.pow(10,k-1)); longm=(long)t; //System.out.print(m); returnm; } publicstaticintgetSize(longd){ longs=1; intcount=0; while(d/s! =0){ s=10*s; count++; } //System.out.print(d/s); returncount; } publicstaticbooleanprefixMatched(longnumber){ booleanch=false; longa=getPrefix(number,getSize(number)); longb=getPrefix(number,getSize(number)-1); if(a==4||a==5||a==6){ ch=true; } if(a==3&&b==7){ ch=true; } returnch; } } 结果截图与分析: 该结果满足实验要求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 软件 java 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)