面向对象程序设计(Java)实验报告
实验四数组
指导教师:赵丹
姓名:刘坤(贵州民大)学号:
专业:信息管理与信息系统日期:2015-04-22
一、实验目的:
熟悉Java数组的创建、初始化、遍历、排序等操作。
二、实验内容:
1、将一个给定的整型数组转置输出,
例如:源数组,1 2 3 4 5 6
转置之后的数组,6 5 4 3 2 1。
2、现在有如下的一个数组:
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:
int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5} ;
3、现在给出两个数组:
数组a:“1,7,9,11,13,15,17,19”;
数组b:“2,4,6,8,10”
两个数组合并为数组c,按升序排列。
4、自己出一个和本章有关的有趣的题目,并编程解答。
三、实验步骤、分析与结论:
1、将一个给定的整型数组转置输出,
例如:源数组,1 2 3 4 5 6
转置之后的数组,6 5 4 3 2 1。
①java程序如下:
public class ArraySwap {
public static void main(String[] args){
int oldArr[]=new int[]{1,2,3,4,5,6};
System.out.println("转置前的数组为:");
printArray(oldArr); //输出一维数组
int newArr[]=new int[oldArr.length];
for(int i=0;i<oldArr.length;i++){
newArr[i]=oldArr[oldArr.length-1-i];
}
System.out.println("转置后的数组是:");
printArray(newArr);
}
private static void printArray(int[] oldArr){
for(int i=0;i<oldArr.length;i++){ //遍历数组
System.out.print(oldArr[i]+" ");
}
System.out.println();
}
}
②在cmd中编译并执行程序的结果如下图所示:
图1
2、现在有如下的一个数组:
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:
int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5} ;
①java程序如下:
public class DelZero {
public static void main(String[] args){
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
System.out.println("原一维数组是:");
for(int i=0;i<oldArr.length;i++){
System.out.print(oldArr[i]+" ");
}
int newArr[]=new int[oldArr.length];
int k=0; //计算新数组的下标变量
for(int i=0;i<oldArr.length;i++){
if(oldArr[i]!=0){
newArr[k]=oldArr[i];
k++;
}
}
System.out.println('\n'+"去0后的一维数组是:");
for(int q=0;q<k;q++){
System.out.print(newArr[q]+" ");
}
}
}
②在cmd中编译并执行程序的结果如下图所示:
图2
3、现在给出两个数组:
数组a:“1,7,9,11,13,15,17,19”;
数组b:“2,4,6,8,10”
两个数组合并为数组c,按升序排列。
①java程序如下:
import java.util.Arrays;
public class RankArray {
public static void main(String[] args){
int a[]={1,7,9,11,13,15,17,19};
int b[]={2,4,6,8,10};
int c[]=new int[a.length+b.length];
for(int i=0;i<a.length;i++){
c[i]=a[i];
}
for(int i=0;i<b.length;i++){
c[a.length+i]=b[i];
}
Arrays.sort(c);
System.out.println("数组a和b合并后,升序排列的数组c是:");
System.out.println(Arrays.toString(c));
}
}
②在cmd中编译并执行程序的结果如下图所示:
图3
4、自己出一个和本章有关的有趣的题目,并编程解答。
①题目:在一个成绩数组中找出最低分和最低分在数组中的位置。
score[]={18,25,6,49,15,2,99,106}
②Java程序如下:
public class MinScore {
public static void main(String[] args){
int score[]={18,25,6,49,15,2,99,106};
int min=score[0];
int position=0;
for(int i=1;i<score.length;i++){
if(score[i]<min){
min=score[i];
position=i;
}
}
System.out.println("成绩数组中最低的分数是:"+min);
System.out.println("该最低成绩在数组中的原始位置是:"+(position));
}
}
③在cmd中编译并执行程序的结果如下图所示:
图4
四、实验总结:
①数组的下标是从0开始的,最后一个元素的下标是“数组名.length-1”;
②合并两个数组,需要定义第三个数组,且第三个数组的大小要大于
或等于两个数组大小之和,即c.length=a.length+b.length,否则会丢失数组元素。
③数组的输出应该采用遍历输出。