JAVA-数组
求一个数组的最大值、最小值、总和,拼接两个数组,从指定数组截取某一段,反转数组,用Java语言实现。在这里要注意到的是,从数组中截取部分,对于输入的数字需要进行判断,看是否合法,其他的与C、C++类似。看代码
MAX
//1.计算数组中最大值
public static int arrayMaxElement(int[] data){
int intMaxValue = data[0];
for(int i = 0; i < data.length; i++){
if(data[i] > intMaxValue){
intMaxValue = data[i];
}
}
return intMaxValue;
}
MIN
//2.计算数组中最小值
public static int arrayMinElement(int[] data){
int intMinValue = data[0];
for(int i = 0; i < data.length; i++){
if(data[i] < intMinValue){
intMinValue = data[i];
}
}
return intMinValue;
}
SUM
//3.计算数组值之和
public static int arrayElementSum(int[] data){
int intValueSum = 0;
for(int i = 0; i < data.length; i++){
intValueSum = intValueSum + data[i];
}
return intValueSum;
}
数组拼接
//4.数组拼接
public static int[] arrayJoin(int[] a, int[] b){
int[] c = new int[a.length + b.length];
for(int i = 0; i < a.length; i++){
c[i] = a[i];
}
for(int i = a.length; i < c.length; i++){
c[i] = b[i-a.length];
}
for(int i = 0; i < c.length; i++){
System.out.print(c[i]+" ");
}
return c;
}
数组截取
//5.数组截取
//[start, end)
public static int[] arraySub(int[] data, int start , int end){
//必须先判断条件
if(((start < 0)||(end > data.length))||(start > end)){
System.out.print("截取从"+start+"开始到"+end+"结束的新数组:");
System.out.println("数字非法!!!");
return null;
}else{
int[] arr = new int[end - start];
//注意该条件的位置,如果满足(start>end),就不会new一个新数组,自然会报错
System.arraycopy(data,start,arr,0,arr.length);
System.out.print("截取从"+start+"开始到"+end+"结束的新数组:");
printArray(arr);
return arr;
}
}
数组打印
//6.数组打印
public static void printArray(int[] data){
for(int i = 0; i < data.length; i++){
System.out.print(data[i]+" ");
}
}
数组反转
//7.数组反转
// 比如:[1,2,3,4] => [4,3,2,1]
public static void printReversal(int[] data){
for(int i = 0; i < data.length / 2; i++){
int tmp = data[data.length - i - 1];
data[data.length - i - 1] = data[i];
data[i] = tmp;
}
printArray(data);
}
测试代码
public class ArrayUtils{
public static void main(String[] args){
//测试
int[] array = new int[] {33,67,45,6,43,21,11,55};
System.out.println("选用数组为:");
printArray(array);
System.out.println();
System.out.println("最大值:"+arrayMaxElement(array));
System.out.println();
System.out.println("最小值:"+arrayMinElement(array));
System.out.println();
System.out.println("总和是:"+arrayElementSum(array));
System.out.println();
int[] array1 = new int[] {8,7,6,5,4,3,2,1};
int[] array2 = new int[] {99,88,77,66,55,44,33,22,11};
System.out.print("拼接之前两个数组分别为:");
printArray(array1);
System.out.println();
printArray(array2);
System.out.println();
System.out.print("拼接之后为:");
System.out.print(arrayJoin(array1,array2));
System.out.println();
System.out.print("要截取的数组:");
printArray(array1);
System.out.println();
arraySub(array1, 5, 10);
System.out.println();
System.out.print("反转之前的数组:");
printArray(array1);
System.out.println();
System.out.print("反转之后的新数组:");
printReversal(array1);
System.out.println();
}
}
结果
(end > data.length)
(start > end)
(start < 0)
正常情况