一维数组
计算平均分
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个一维数组来存储成绩
int[] scores=new int[5];
int sum=0;//计算成绩总和
Scanner input=new Scanner(System.in);
System.out.println(“请输入5位学员的成绩:”);
for(int i=0;i<scores.length;i++) {
scores[i]=input.nextInt();
sum=sum+scores[i];//成绩累加
System.out.print(scores[i]+" ");
}
System.out.println();
//使用for-each遍历
/*
for(int score:scores){
sum+=score;
}
*/
System.out.println("平均分为:"+(double)sum/scores.length);
for(int i=0;i<scores.length;i++) {
scores[i]=input.nextInt();
}
}
结果
在进行数组赋值的时候,切记一定需要注意:
1、直接赋值的时候不需要写长度 但是不赋值的话要写长度, int[] scores = new int[];
2、数组下标越界异常 下标超过了数组长度减一的值。
求最大值
插入数值
有一个降序排列的数组,新增一个数字,也要保持降序排列
注要就是把插入的数值与数组中的值依次进行比较,找到第一个数值比他小的位置,就是他要插入的位置, 然后在把他下标往后面的移动一位。
正常结果
由于代码还存在bug,本来的数组是需要降序排列好的,否则不能完全按降序输出,代码需要改进。
统计数组中奇偶个数
数组倒叙复制输出
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array = new int[10]; //源数组
int[] newArray = new int[10]; //目标数组
for(int i=0;i<array.length;i++){
array[i] = i+1; //元素的值等于其下标+1
}
System.out.println(“原数组:”);
for(int num:array){//增强版的for循环会比简单版的for循环更简单
System.out.print(num+"\t");
}
System.out.println();
int index = array.length-1;//就是数组的最后一个下标
//遍历新数组
for(int i=0;i<newArray.length;i++){
newArray[i] = array[index--];
}
System.out.println("新数组:");
for(int num:newArray){
System.out.print(num+"\t");
}
}
结果
去除数组中的0
int[] list=new int[] {11,0,20,30,40,50,55,0,9,0,4,0};
int count=0;//统计数组中不为0的个数
for(int i=0;i<list.length;i++) {
if(list[i]!=0) {
count++;
}
}
System.out.println("不为0的个数是:"+count);
System.out.println();
int newList[]=new int[count];//用来存放不为0的所有元素
//将原数组中不为0的元素保存到新数组中
int j=0;//控制新数组的下标
for(int i=0;i<list.length;i++) {
if(list[i]!=0) {
newList[j++]=list[i];
System.out.println("第"+j+"个元素是"+list[i]);
}
}
System.out.println();
//输出新数组
for(int i=0;i<newList.length;i++) {
System.out.print(newList[i]+"\t");
}
}
结果
合并数组
首先需要讲一下静态方法arraycopy():System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。其函数原型是:
public static void (Object src,
int srcPos,
Object dest,
int destPos,
int length)
src:源数组; srcPos:源数组要复制的起始位置;
dest:目的数组; destPos:目的数组放置的起始位置; length:被复制的数组的长度。
注意:src and dest都必须是同类型或者可以进行转换类型的数组。
一定一定要注意参数的个数
此处给出合并三个数组的源码
public static void main(String[] args) {
// TODO Auto-generated method stub
int arrayA[]=new int[] {1,2,3,4,5,6};//创建数组A
int arrayB[]=new int[] {7,18,9,2010,11};//创建数组B
int arrayD[]=new int[] {11,22,39,20};//创建数组D
int len=arrayA.length+arrayB.length+arrayD.length;//新数组的大小
int arrayC[]=new int[len];//长度即为两个数组的和
System.arraycopy(arrayA,0,arrayC,0,arrayA.length);//拷贝第一个数组
System.arraycopy(arrayB, 0, arrayC,arrayA.length, arrayB.length);//拷贝第二个数组
System.arraycopy(arrayD, 0, arrayC, arrayA.length+arrayB.length,arrayD.length);//拷贝第三个数组
java.util.Arrays.sort(arrayC);
for(int x=0;x<arrayC.length;x++) {
System.out.print(arrayC[x]+" ");
}
}
结果