实验3 方法和数组.docx
《实验3 方法和数组.docx》由会员分享,可在线阅读,更多相关《实验3 方法和数组.docx(15页珍藏版)》请在冰豆网上搜索。
实验3方法和数组
实验报告
姓名
学号
专业班级
计科
课程名称
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})实现冒泡排序、选择排序和插入排序中的两种排序算法,程序中要求加注释。
程序代码:
//选择排序
publicclassSelectionSort{
publicstaticvoidselectionSort(int[]list){
for(inti=0;iintcurrentMin=list[i];//currentMin存储现有的最小值
intcurrentMinIndex=i;//最小值的位置
for(intj=i+1;jif(currentMin>list[j]){
currentMin=list[j];
currentMinIndex=j;//记下此时的位置
}
}
if(currentMinIndex!
=i){
list[currentMinIndex]=list[i];
list[i]=currentMin;
}//交换位置
}
}
publicstaticvoidmain(String[]args){
int[]list={7,4,3,9,0,6};
SelectionSort.selectionSort(list);
for(inti=0;iSystem.out.print(list[i]+””);//输出已排序数组
}
}
运行结果贴图:
程序代码
//插入排序
publicclassInsertSort{
publicstaticvoidinsertSort(int[]list){
for(inti=1;iintcurrentMin=list[i];//找见现在排序的元素
intj;
for(j=i-1;j>=0&&list[j]>currentMin;j--){
list[j+1]=list[j];
}
list[j+1]=currentMin;//放入插入数据
}
}
publicstaticvoidmain(String[]args){
int[]list={7,4,3,9,0,6};
InsertSort.insertSort(list);
for(inti=0;iSystem.out.print(list[i]+"");
}
}
}
运行结果贴图:
(2)编写程序实现两个矩阵的相加、相乘。
要求程序运行结果形如如下显示:
Arrayc
123
456
789
Arrayd
222
111
333
Arrayc+d
345
567
101112
Arrayc*d
121212
212121
303030
程序代码:
publicclassMatrix{
publicstaticvoidMatrix(int[][]Matrix){
for(inti=0;i<3;i++){
for(intj=0;j<3;j++){
System.out.printf("%4d",Matrix[i][j]);}
System.out.println();
}//输出数组所有数字
}
publicstaticvoidAddMatrix(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];
}
}
Matrix(Answer);
}//定义数组各个数字相加方法
publicstaticvoidMultiplyMatrix(int[][]multiply1,int[][]multiply2){
int[][]Answer=newint[3][3];
for(inti=0;i<3;i++){
for(intj=0;j<3;j++){
Answer[i][j]=multiply1[i][0]*multiply2[0][j]+multiply1[i][1]*multiply2[1][j]+multiply1[i][2]*multiply2[2][j];
}
}
Matrix(Answer);
}//定义数组各个数字相乘方法
publicstaticvoidmain(String[]args){
int[][]c={{1,2,3},{4,5,6},{7,8,9}};//定义并初始化数组c
int[][]d={{2,2,2},{1,1,1},{3,3,3}};//定义并初始化数组d
System.out.println("Arrayc");
Matrix(c);
System.out.println("Arrayd");
Matrix(d);
System.out.println("Arrayc+d");
AddMatrix(c,d);//调用addmatrix方法
System.out.println("Arrayc*d");
MultiplyMatrix(c,d);//调用multiplymatrix方法
}
}
运行结果贴图:
(3)将用“;”和“,”分割的包含数字字符的字符串“23,21.3,33;34,2,1.9,2.1;3,3,1,3,4,4.9”中的数据解析出来放在一个double类型的二维数组中,以分号分割二维数组的每一行,以逗号分割每行中的各个元素。
(利用String的split方法)
程序代码:
publicclassSplit{
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;ib[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();
}
}
}
运行结果贴图:
(4)查看帮助、编写例子
利用System类中的arraycopy()方法复制数组。
分别用Arrays类中的sort方法和binarySearch方法实现数组的排序和折半查找。
程序代码:
//数组复制
publicclassArrayCopy{
publicstaticvoidmain(String[]args){
int[]sourceArray={4,3,4,5,6,7,8};//定义并初始化数组
int[]targetArray=newint[7];//定义并创建新目标数组
System.arraycopy(sourceArray,0,targetArray,0,sourceArray.length);//调用系统中arraycopy方法
for(inti=0;iSystem.out.println(targetArray[i]);
}
}
}
运行结果贴图:
程序代码:
//数组排序
importjava.util.*;
publicclassArraySort{
publicstaticvoidmain(String[]args){
int[]array={5,4,11,20,3,7};
Arrays.sort(array);////调用系统中array类中的sort方法
for(inti=0;iSystem.out.print(array[i]+"");
}
}
}
运行结果贴图:
程序代码:
//折半查找
importjava.util.*;
publicclassInsert{
publicstaticvoidmain(String[]args){
double[]a={10,13,21,31,54,66,71,75};
System.out.println("请输入要查找的数:
");
Scannerinput=newScanner(System.in);
inti=input.nextInt();
System.out.println(Arrays.binarySearch(a,i));//调用系统中binarySearch方法
}
}
运行结果贴图:
(5)随机生成100个小写字母,统计每个字母出现的次数,并显示出来。
(利用Math.random()方法随机产生)
程序代码:
publicclassMandom{
publicstaticvoidmain(String[]args){
char[]number=newchar[100];//定义并创建一个容量为100的字符数组
for(inti=0;inumber[i]=(char)('a'+Math.random()*('z'-'a'+1));
}
CountNumber(number);
}
publicstaticvoidCountNumber(char[]Count){
int[]counts=newint[26];
for(inti=0;icounts[Count[i]-'a']++;//count字符减字符存到相应的位置
}
SystemOut(counts);
}
publicstaticvoidSystemOut(int[]syso){
for(inti=0;iSystem.out.println((char)(i+'a')+"出现的次数是:
"+syso[i]);
}//i对应a~z
}
}
运行结果贴图:
(6)建立一个不规则的二维数组如下,并在控制台显示,数组如下
135
2468
19162536
102030
123456
程序代码:
publicclassTwoArray{
publicstaticvoidmain(String[]args){
int[][]array={{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;jSystem.out.printf("%-4d",array[i][j]);
}
System.out.println();//输出后换行
}
}
}
运行结果贴图: