实验3方法和数组.docx
- 文档编号:17553891
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:35
- 大小:216.36KB
实验3方法和数组.docx
《实验3方法和数组.docx》由会员分享,可在线阅读,更多相关《实验3方法和数组.docx(35页珍藏版)》请在冰点文库上搜索。
实验3方法和数组
xxxx大学计算机与信息技术学院
实验报告
姓名
学号
专业班级
课程名称
Java实验
实验日期
成绩
指导教师
批改日期
实验名称
实验3方法和数组
实验目的:
(1)掌握一维数组和二维数组的定义、初始化方法。
(2)了解和初步应用java.lang.Math类的random()方法处理实际问题。
(3)了解增强for循环,并使用增强for循环顺序访问数组元素。
(4)掌握String类中split方法、charAt方法以及length方法的使用。
(5)掌握Double、Integer等数据包装类的parseDouble、parseInt等方法。
(6)掌握数组的length属性的应用
实验内容:
(要求把源程序和运行结果图都粘贴到实验报告中)
(1)分别用一维数组(例子数组如下{7,4,3,9,0,6})实现冒泡排序、选择排序和插入排序中的两种排序算法,程序中要求加注释。
程序代码:
1.选择排序
importjava.util.*;
publicclassLX3_1{
publicstaticvoidmain(String[]args){
double[]text={7,4,3,9,0,6};
SelectionSort(text);
}
publicstaticvoidSelectionSort(double[]list){
for(inti=0;i doublecurrentMin=list[i];//currentMin存储现有的最小值 intcurrentMinIndex=i;//最小值的位置 for(intj=i+1;j if(currentMin>list[j]){//如果有比他小的 currentMin=list[j];//吧此时的值放入currentMin currentMinIndex=j;//记下此时的位置 } } if(currentMinIndex! =i){ list[currentMinIndex]=list[i]; list[i]=currentMin; }//交换位置 } System.out.println("排序结果是: "); for(inti=0;i System.out.print(""+list[i]);//输出已排序数组 } } } 运行结果贴图: 2.插入排序 importjava.util.*; publicclassLX3_2{ publicstaticvoidmain(String[]args){ double[]text={7,4,3,9,0,6}; insertionSort(text); } publicstaticvoidinsertionSort(double[]list){ for(inti=1;i doublecurrentElement=list[i];//找见现在排序的元素 intk; for(k=i-1;k>=0&&list[k]>currentElement;k--){ list[k+1]=list[k];//移动出插入位置 } list[k+1]=currentElement;//放入插入数据 } System.out.println("排序结果是: "); for(inti=0;i System.out.print(""+list[i]);//输出已排序数组 } } } 运行结果贴图: 3冒泡排序 importjava.util.*; publicclassLX3_3{ publicstaticvoidmain(String[]args){ double[]text={7,4,3,9,0,6}; Sort(text); } publicstaticvoidSort(double[]list){ for(inti=0;i for(intj=list.length-1;j>i;j--){//length-1length超出范围 if(list[j] doublet=list[j]; list[j]=list[j-1]; list[j-1]=t; } } } System.out.println("排序结果是: "); for(inti=0;i System.out.print(""+list[i]);//输出已排序数组 } } } ‘ 运行结果贴图: (2)编写程序实现两个矩阵的相加、相乘。 要求程序运行结果形如如下显示: Arrayc 123 456 789 Arrayd 222 111 333 Arrayc+d 345 567 101112 Arrayc*d 131313 313131 494949 程序代码: publicclassLX3_4{ /** *@paramargs */ publicstaticvoidmain(String[]args){ int[][]c={{1,2,3},{4,5,6},{7,8,9}}; int[][]d={{2,2,2},{1,1,1},{3,3,3}}; System.out.println("Arrayc"); shuChu(c); System.out.println("Arrayd"); shuChu(d); System.out.println("Arrayc+d"); Add(c,d); System.out.println("Arrayc*d"); Cheng(c,d); //TODOAuto-generatedmethodstub } publicstaticvoidshuChu(int[][]shuChu){ for(inti=0;i<3;i++){ for(intj=0;j<3;j++){ System.out.printf("%4d",shuChu[i][j]); } System.out.println(); } } publicstaticvoidAdd(int[][]add1,int[][]add2){ int[][]Answer=newint[3][3]; for(inti=0;i<3;i++){ for(intj=0;j<3;j++){ Answer[i][j]=add1[i][j]+add2[i][j]; } } shuChu(Answer); } publicstaticvoidCheng(int[][]cheng1,int[][]cheng2){ int[][]Answer=newint[3][3]; for(inti=0;i<3;i++){ for(intj=0;j<3;j++){ Answer[i][j]=cheng1[i][0]*cheng2[0][j]+cheng1[i][1] *cheng2[1][j]+cheng1[i][2]*cheng2[2][j]; } } shuChu(Answer); } } 运行结果贴图: (3)将用“;”和“,”分割的包含数字字符的字符串“23,21.3,33;34,2,1.9,2.1;3,3,1,3,4,4.9”中的数据解析出来放在一个double类型的二维数组中,以分号分割二维数组的每一行,以逗号分割每行中的各个元素。 (利用String的split方法) 程序代码: importjavax.swing.plaf.basic.BasicBorders.SplitPaneBorder; publicclassLX3_5{ /** *@paramargs */ publicstaticvoidmain(String[]args){ String[]a="23,21.3,33;34,2,1.9,2.1;3,3,1,3,4,4.9".split(";"); String[][]b=newString[3][]; for(inti=0;i b[i]=a[i].split(",");//第i行的值,且split仅能放入Stringl类型 } double[][]c=newdouble[3][8];//第二个必须有范围,否则无法运行 for(inti=0;i<3;i++){ for(intj=0;j c[i][j]=Double.parseDouble(b[i][j]); System.out.printf("%-8.1f",c[i][j]); } System.out.println(); } //TODOAuto-generatedmethodstub } } 运行结果贴图: (4)查看帮助、编写例子 利用System类中的arraycopy()方法复制数组。 分别用Arrays类中的sort方法和binarySearch方法实现数组的排序和折半查找。 程序代码: 1.复制数组: publicclassLX3_6{ publicstaticvoidmain(String[]args){ int[]old={1,2,3,4,5,6,7}; int[]copy=newint[7]; System.arraycopy(old,0,copy,0,old.length); //TODOAuto-generatedmethodstub for(inti=0;i System.out.println(copy[i]); } } } 运行结果贴图: 2.数组排序: importjava.util.*; publicclassLX3_7{ publicstaticvoidmain(String[]args){ double[]te={7,4,3,9,0,6}; Arrays.sort(te);//多种方法重载 for(inti=0;i System.out.println(te[i]); } } } 运行结果贴图: 3.折半查找: importjava.util.*; publicclassLX3_8{ publicstaticvoidmain(String[]args){ double[]te={1,9,21,31,44,56,78,99}; System.out.println("请输入要查找的数"); Scannerinput=newScanner(System.in); inti=input.nextInt(); System.out.println(Arrays.binarySearch(te,i)); } } 运行结果贴图: (5)随机生成100个小写字母,统计每个字母出现的次数,并显示出来。 (利用Math.random()方法随机产生) 程序代码: publicclassLX3_9{ publicstaticvoidmain(String[]args){ char[]number=newchar[100]; for(inti=0;i number[i]=(char)('a'+Math.random()*('z'-'a'+1)); } CountNumber(number); } publicstaticvoidCountNumber(char[]Count){ int[]counts=newint[26]; for(inti=0;i counts[Count[i]-'a']++;//count字符减字符存到相应的位置 } SystemOut(counts); } publicstaticvoidSystemOut(int[]syso){ for(inti=0;i System.out.println((char)(i+'a')+"出现的次数是: "+syso[i]);//i对应a~z } } } 运行结果贴图: (6)建立一个不规则的二维数组如下,并在控制台显示,数组如下 135 2468 19162536 102030 123456 程序代码: publicclassLX3_10{ publicstaticvoidmain(String[]args){ int[][]new1={{1,3,5},{2,4,6,8},{1,9,16,25,36}, {10,20,30},{1,2,3,4,5,6}}; for(inti=0;i<5;i++){ for(intj=0;j System.out.printf("%-4d",new1[i][j]); } System.out.println(); } } } 运行结果贴图: (7)编写两个重载的方法分别交换两个整型变量,和整型数组的第一个和第二个元素,运行并分析结果 程序代码: publicclassLX3_11{ publicstaticvoidmain(String[]args){ inta=2,b=5; int[]c={2,5}; Switch(a,b); Switch(c); } publicstaticvoidSwitch(inta,intb){ intt; t=a; a=b; b=t; System.out.println("交换以后: "); System.out.println("a="+a+"b="+b); } publicstaticvoidSwitch(int[]a){ intt; t=a[0]; a[0]=a[1]; a[1]=t; System.out.println("a[0]="+a[0]+"a[1]="+a[1]); } } 运行结果贴图: 课后作业题 P1535.165.235.25 P1846.13 P1866.26 P2027.17.27.67.23* 5.16 程序代码: publicclassLX3_12{ publicstaticvoidmain(String[]args){ for(inti=2000;i<=2010;i++){ System.out.println(i+"年的天数是"+numberOfDaysInYear(i)); } } publicstaticintnumberOfDaysInYear(intyear){ if(year%400==0||(year%4==0&&year%100! =0)){ return366; }else{ return365; } } } 运行结果贴图: 5.23 程序代码: publicclassLX3_13{ publicstaticvoidmain(String[]args){ System.out.println("100个大写字母: "); SysOut('A','Z'); System.out.println("100个一位数: "); SysOut('0','9'); } publicstaticchargetRandomCharacter(charch1,charch2){ return(char)(ch1+Math.random()*(ch2-ch1+1)); } publicstaticvoidSysOut(charzf1,charzf2){ for(inti=0;i<10;i++){ for(intj=0;j<10;j++){ System.out.printf("%-4c",getRandomCharacter(zf1,zf2)); } System.out.println(); } } } 运行结果贴图: 5.25 程序代码: importjava.util.*; publicclassLX3_14{ publicstaticvoidmain(String[]args){ Scannerinput=newScanner(System.in); System.out.println("请输入毫秒数: "); longi=input.nextLong(); System.out.println(convertMillis(i)); } publicstaticStringconvertMillis(longmills){ longa=mills/3600000; longb=(mills-a*3600000)/60000; longc=(mills-a*3600000-b*60000)/1000; return(a+": "+b+": "+c);/*转换为String类型1.i+"空或字符串";2String.valueOf(i);*/ } } 运行结果贴图: 6.13 程序代码: publicclassLX3_15{ publicstaticvoidmain(String[]args){ int[]a={1,4,13,51}; System.out.println(getRandom(a)); } publicstaticintgetRandom(int...numbers){ ints=(int)(1+Math.random()*54); for(inti=0;i inta=numbers[i]-s; if(a==0){ s=getRandom(numbers); } } returns; } } 运行结果贴图: 6.26 程序代码: importjava.util.*; publicclassLX3_16{ publicstaticvoidmain(String[]args){ System.out.println("Enterlist1"); int[]list1=creatArray(); System.out.println("Enterlist2"); int[]list2=creatArray(); compare(list1,list2); } publicstaticint[]creatArray(){ intlength=0; Scannerinput=newScanner(System.in); length=input.nextInt(); int[]a=newint[length]; for(inti=0;i a[i]=input.nextInt(); } returna; } publicstaticvoidcompare(int[]ch1,int[]ch2){ ints=0; if(ch1.length==ch2.length){ for(inti=0;i s=ch1[i]-ch2[i]; if(s! =0){ System.out.println("Twolistsarenotstrictlyidentical"); Syste
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 方法 数组