数组及二维数组案例

1

/*
    合并两个随机生成数组:
        数组长度:1-10随机
        元素的范围:0-50随机
        
*/
public class Demo{
    public static void main(String[] args){
        int[] arr1 = genArray();
        printArray(arr1);
        int[] arr2 = genArray();
        printArray(arr2);
        
        int[] big = merge(arr1,arr2);
        printArray(big);
        
    }
        //随机生成int数组
    public static int[] genArray(){
        int len = (int)(Math.random() * 10 + 1);
        int[] arr = new int[len];
        for(int i = 0;i<arr.length;i++){
            arr[i] = (int)(Math.random() * 51);
        }
        return arr;
    }

    //合并两个数组
    public static int[] merge(int[] arr1,int[] arr2){
        int[] big = new int[arr1.length + arr2.length];
        int index = 0;
        //遍历第一个数组
        for(int i = 0;i<arr1.length;i++){
            big[index] = arr1[i];
            index++;
        }
        
        //遍历第二个数组
        for(int i = 0;i<arr2.length;i++){
            big[index] = arr2[i];
            index++;
        }
        
        return big;
    }
    
    
    //数组打印
    public static void printArray(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

 

 

 

 

 

 

2

/*
    在一个int型数组的末尾追加一个元素
    int[] arr = {1,2,3,4};
    int value = 88;
    结果:
    arr = {1,2,3,4,88};
*/

public class ArrayInsertDemo{
    public static void main(String[] args){
        int[] arr = {1,2,3,4};
        int value = 88;
        print(arrayTailInsert(arr,value));
    }
    
    //
    public static int[] arrayTailInsert(int[] arr,int value){
        int[] res = new int[arr.length + 1];
        for(int i = 0;i<arr.length;i++){
            res[i] = arr[i];
        }
        res[res.length - 1] = value;
        return res;
    }
    public static void print(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

3

/*
    在数组的任意位置插入数据
    
*/
public class ArrayInsertDemo2{
    public static void main(String[] args){
        int[] arr = {1,2,3,4,5};
        int position = 0;
        int value = 88;
        int[] res = arrayAnyPositionInsert(arr,position,value);
        if(res != null){
            print(res);
        }else{
            System.out.println("位置非法");
        }
    }
    
    //
    public static int[] arrayAnyPositionInsert(int[] arr,int position,int value){
        int[] res = new int[arr.length + 1];
        //判断position合法性
        if(position > res.length || position < 0){
            return null;
        }
        //
        for(int i = 0;i<res.length;i++){
            if(i < position){
                res[i] = arr[i];
            }else if(i == position){
                res[i] = value;
            }else{
                res[i] = arr[i - 1];
            }
        }
        return res;
    }
    public static void print(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

4

/*
    删除元素:包含多个要删除的元素,都删除
*/
public class ArrayDelElementDemo{
    public static void main(String[] args){
        int[] arr = {1,2,2,1,3,5,5};
        int value = 50;
        print(delElement(arr,value));
    }
    
    //删除指定的元素
    public static int[] delElement(int[] arr,int value){
        //判断数组中是否包含指定值
        if(!isExist(arr,value)){
            return arr;
        }
        //统计有多少个要删除的元素
        int count = 0;
        for(int i = 0;i<arr.length;i++){
            if(arr[i] == value){
                count++;
            }
        }
        //创建新数组
        int[] res = new int[arr.length - count];
        
        //遍历原数组,把不等于value的值赋值给res
        int index = 0;
        for(int i = 0;i<arr.length;i++){
            if(arr[i] != value){
                res[index++] = arr[i];
            }
        }
        
        return res;
    }
    
    //判断数组中是否包含指定值
    public static boolean isExist(int[] arr,int value){
        for(int i = 0;i<arr.length;i++){
            if(arr[i] == value){
                return true;
            }
        }
        return false;
    }
    
    public static void print(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

5

 

/*
    抽取奇数索引的元素
*/
public class GetOddIndexDemo{
    
    public static void main(String[] args){
        int[] arr = {1,2,3,4,5,6,7,8,9,10};
        int[] res = getOddIndexElement(arr);
        print(res);
    }
    
    //
    public static int[] getOddIndexElement(int[] arr){
        //计算奇数索引的个数
        int len = arr.length / 2;
        //创建新数组
        int[] res = new int[len];
        
        //遍历原数组,把奇数索引的值赋值到新数组
        int index = 0;
        for(int i = 0;i<arr.length;i++){
            if(i % 2 != 0){
                res[index++] = arr[i];
            }
        }
        return res;
    }
    
    public static void print(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

6

/*
获取一个数组偶数索引的元素
*/
public class GetEvenIndexDemo{
    public static void main(String[] args){
        int[] arr = {1};
        int[] res = getEvenIndexElement(arr);
        print(res);
    }
    
    //
    public static int[] getEvenIndexElement(int[] arr){
        //计算偶数索引的个数
        int len = (arr.length + 1) / 2;
        int[] res = new int[len];
        int index = 0;
        for(int i = 0;i<arr.length;i++){
            if(i % 2 == 0){
                res[index++] = arr[i];
            }
        }
        return res;
    }
    public static void print(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

7

/*
    数组的反转
*/
public class ReverseDemo{
    public static void main(String[] args){
        int[] arr = {1,2,3,4,5};
        System.out.println("反转之前");
        print(arr);
        
        reverse(arr);
        System.out.println("反转之后");
        print(arr);
    }
    
    //
    public static void reverse(int[] arr){
        //计算交换的次数
        int n = arr.length / 2;
        
        for(int i = 0;i<n;i++){
            //
            int temp = arr[i];
            arr[i] = arr[arr.length - 1 - i];
            arr[arr.length - 1 - i] = temp;
        }
    }
    
    public static void print(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

 

8

/*
    java 中参数传递:
        1.当参数是基本数据类型时,传递是数据的副本
        2.当参数是引用数据类型时,传递是引用的副本
*/
public class ParamPassDemo{
    public static void main(String[] args){
        /*
        int a = 10;
        int b = 20;
        change(a,b);
        System.out.println("方法外部:a = " + a +", b = " + b);
        */
        int[] arr = {1,2,3};
        System.out.println("方法调用前:");
        print(arr);
        change(arr);//
        System.out.println("方法调用后:");
        print(arr);
        
    }
    
    public static void change(int a,int b){
        int temp = a;
        a = b;
        b = temp;
        System.out.println("方法内部:a = " + a +", b = " + b);
    }
    
    public static void change(int[] arr){//形参arr = 实参arr;
        for(int i = 0;i<arr.length;i++){
            arr[i] = arr[i] * 2;
        }
    }
    public static void print(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

9

/*
    二维数组定义格式:
        int[][] arr = new int[3][2];
        
        int[][] arr = new int[2][]; 
        arr[0] = new int[2];
        arr[1] = new int[3];
        
        int[][] arr = new int[][]{{1,2},{3,4},{5}};
        int[][] arr = {{1,2},{3,4},{5}};
*/

public class TwoDemArrayDemo{
    public static void main(String[] args){
        /*
        int[][] arr = new int[3][2];
        System.out.println(arr[0]);//地址值
        System.out.println(arr[0][0]);//
        
    
        int[][] arr2 = new int[2][];
        arr2[0] = new int[2];
        arr2[1] = new int[3];
        System.out.println(arr2[0]);//地址值
        System.out.println(arr2[0][0]);//
        
        
        int[][] arr = {{1,2},{3,4},{5}};
        System.out.println(arr[0]);//地址值
        System.out.println(arr[2][0]);//1
        */
        int[][] arr = {{1,2},{3,4},{5}};
        
        for(int i = 0;i<arr.length;i++){
            for(int j = 0;j<arr[i].length;j++){
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

10

/*
二维数组求和
*/
public class CountSumDemo{
    public static void main(String[] args){
        int[][] arr = new int[4][];
        /*
        arr[0] = new int[3];
        arr[1] = new int[5];
        arr[2] = new int[9];
        arr[3] = new int[12];
        */
        arr[0] = new int[]{1,2,5};
        arr[1] = new int[]{4,7,9};
        arr[2] = new int[]{3,44};
        arr[3] = new int[]{99,2};
        
        int count = 0;
        int sum = 0;
        for(int i = 0;i<arr.length;i++){
            for(int j = 0;j<arr[i].length;j++){
                count++;
                sum += arr[i][j];
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
        
        System.out.println(sum);
    }
}

11.

/*
    Car 类
*/
public class Car{
    //定义成员变量
    String color;
    int year;
    int price;
    
    //定义成员方法
    public void run(){
        System.out.println("the car is running...");
    }
    
}

12

/*
    删除int型数组指定位置的元素
*/
public class ArrayDelAnyPosition{
    public static void main(String[] args){
        int[] arr = {1,2,3,4,5,5,5,5};
        int position = 10;
        int[] res = delAnyPosition(arr,position);
        if(res != null){
            print(res);
        }else{
            System.out.println("位置非法");
        }
    }
    
    //
    public static int[] delAnyPosition(int[] arr,int position){
        //不合法
        if(position >= arr.length || position < 0){
            return null;
        }
        //
        int[] res = new int[arr.length - 1];
        
        for(int i = 0;i<res.length;i++){
            if(i < position){
                res[i] = arr[i];
            }else{
                res[i] = arr[i + 1];
            }
        }
        return res;
    }
    
    public static void print(int[] arr){
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }

 

posted on 2018-04-08 23:45  长空剑使  阅读(783)  评论(0编辑  收藏  举报