中南软件java实验报告2.docx

上传人:b****8 文档编号:29593331 上传时间:2023-07-24 格式:DOCX 页数:19 大小:48.19KB
下载 相关 举报
中南软件java实验报告2.docx_第1页
第1页 / 共19页
中南软件java实验报告2.docx_第2页
第2页 / 共19页
中南软件java实验报告2.docx_第3页
第3页 / 共19页
中南软件java实验报告2.docx_第4页
第4页 / 共19页
中南软件java实验报告2.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

中南软件java实验报告2.docx

《中南软件java实验报告2.docx》由会员分享,可在线阅读,更多相关《中南软件java实验报告2.docx(19页珍藏版)》请在冰豆网上搜索。

中南软件java实验报告2.docx

中南软件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模板 > 卡通动漫

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1