• 数组-Array


    1.数组的概念

    /*
        数组的格式
        
        数组:
            同一种数据类型的若干个值的容器
        
        元素:数组中的值称为元素
        索引:元素的标号,从0开始
        长度:数组中元素的个数
    */
    public class ArrayDemo1{
        public static void main(String[] args){
            
            int a = 1;
            int b = 2;
            int c = 3;
            
            //数据类型 变量名 = 初始值;
            
            //定义数组,第一种格式:动态初始化,定义数组时,不指定数组里具体的值.
            int[] arr = new int[10];
            
            //第二种静态初始化:定义数组时,元素已经确定
            int[] arr2 = new int[]{1,2,3};
            //简化写法
            int[] arr3 = {10,20,30};
        }
    }

    2.数组元素的使用

    /*
        数组元素的使用:
            数组名[索引值]
            
        数组元素的默认值:
            能为0的为0,能为0.0的为0.0,能为false的为false,能为null的为null
    */
    public class ArrayDemo2{
        public static void main(String[] args){
            //创建一个长度为5的int型数组
            // double[] arr = new double[5];
            // boolean[] arr = new boolean[5];
            // String[] arr = new String[5];
            
            
            /*
            
            System.out.println(arr[0]);
            System.out.println(arr[1]);
            System.out.println(arr[2]);
            System.out.println(arr[3]);
            System.out.println(arr[4]);
            */
            
            // int[] arr = new int[5];        
            // byte[] arr = new byte[5];        
            // short[] arr = new short[5];        
            // char[] arr = new char[5];        
            // int[] arr = new int[5];        
            //用循环改进
            for(int i = 0;i<5;i++){
                System.out.println(arr[i]);
            }
        }
    }

    3.获取数组中的最值

    /*
        获取数组的最值(最大值,最小值)
        
        int[] arr = {1,4,3,2};
        
        
    */
    public class ArrayDemo3{
        public static void main(String[] args){
            /*
            int[] arr = getArray(20);
            printArray(arr);
            int max = getMax(arr);
            System.out.println("最大值是: " + max);
            int min = getMin(arr);
            System.out.println("最小值是: " + min);
            */
            printArray(getUniqueArray(20));
        }
        
        //获取一个int型数组的最大值
        public static int getMax(int[] arr){
            int max = arr[0];
            for(int i = 1;i<arr.length;i++){
                if(arr[i] > max){
                    max = arr[i];
                }
            }
            return max;
        }
        
        //获取一个int型数组的最小值
        public static int getMin(int[] arr){
            int min = arr[0];
            for(int i = 1;i<arr.length;i++){
                if(arr[i] < min){
                    min = arr[i];
                }
            }
            return min;
        }
        
        //获取一个范围是1-50之间的int数组
        public static int[] getArray(int n){
            int[] arr = new int[n];
            //循环产生随机数,放到数组中
            for(int i = 0;i<arr.length;i++){
                int r = (int)(Math.random() * 50 + 1);
                arr[i] = r;
            }
            
            return arr;
        }
        
        //打印数组元素
        public static void printArray(int[] arr){
            for(int i = 0;i<arr.length;i++){
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
        
        
        //生成一个不包含重复元素的int型数组
        public static int[] getUniqueArray(int n){
            int[] arr = new int[n];//
            for(int i = 0;i<arr.length;i++){
                int r = (int)(Math.random() * 50 + 1);
                while(isExist(arr,r)){
                    r = (int)(Math.random() * 50 + 1);
                }
                arr[i] = r;
            }
            return arr;
        }
        
        
        //判断一个数组中是否包含某个数值
        public static boolean isExist(int[] arr,int value){
            for(int i = 0;i<arr.length;i++){
                if(value == arr[i]){
                    return true;
                }
            }
            return false;
        }
    }

    4.从键盘录入数据,并求最值

    /*
        从键盘录入数组的元素,并求最值
    */
    import java.util.Scanner;
    
    public class ArrayDemo4{
        public static void main(String[] args){
            int[] arr = genArray();
            System.out.println("最大值是: " + getMax(arr));
            System.out.println("最小值是: " + getMin(arr));
        }
        
        //从键盘录入数据,并返回一个int型数组
        public static int[] genArray(){
            Scanner s = new Scanner(System.in);
            
            System.out.print("输入数组的长度 : ");
            int len = s.nextInt();
            int[] arr = new int[len];
            
            for(int i = 0;i<arr.length;i++){
                System.out.print("请输入第"+ (i+1) + "个数: ");
                arr[i] = s.nextInt();
            }
            
            return arr;
        }
        
        //获取最小值
        public static int getMin(int[] arr){
            int min = arr[0];
            for(int i = 1;i<arr.length;i++){
                if(arr[i] < min){
                    min = arr[i];
                }
            }
            return min;
        }
        
        //获取最大值
        public static int getMax(int[] arr){
            int max = arr[0];
            for(int i = 1;i<arr.length;i++){
                if(arr[i] > max){
                    max = arr[i];
                }
            }
            return max;
        }
    }

    5.随机生成一个5个元素在(1-10)的int型数组,求一个随机数在这个数组中第一次出现的索引值

    /*
        随机生成一个5个元素(1-10)的int型数组,求一个随机数在这个数组中第一次出现的索引值
    */
    public class ArrayDemo6{
        public static void main(String[] args){
            int[] arr = genArray();
            printArray(arr);
            int r = (int)(Math.random() * 10 + 1);
            int index = getIndex(arr,r);
            
            if(index < 0){
                System.out.println(r + "没找到");
            }else{
                System.out.println(r + "第一次出现的索引是: " + index);
            }
            
        }
        
        //获取一个数在指定数组中出现的第一次索引值
        public static int getIndex(int[] arr,int value){
            for(int i = 0;i<arr.length;i++){
                if(arr[i] == value){
                    return i;
                }
            }
            return -1;
        }
        
        
        //生成一个int型数组
        public static int[] genArray(){
            int[] arr = new int[5];
            for(int i = 0;i<arr.length;i++){
                int r = (int)(Math.random() * 10 + 1);
                arr[i] = r;
            }
            return arr;
        }
        
        //打印数组
        public static void printArray(int[] arr){
            for(int i = 0;i<arr.length;i++){
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
    }

    6.用数组模拟裁判打分

        5个裁判,去掉最高分和最低分,然后求剩余元素的平均值.

    /*
    	用数组模拟打分:
    		5个裁判,去掉最高分,最低分,然后求剩余元素的平均值作为最终得分
    */
    public class ArrayDemo7{
    	public static void main(String[] args){
    		int n = 5;
    		int[] arr = genArray(n);
    		print(arr);
    		
    		double avg = getAvg(arr);
    		System.out.println("平均分是: " + avg);
    		
    	}
    	
    	//求平均值
    	public static double getAvg(int[] arr){
    		int max = getMax(arr);
    		int min = getMin(arr);
    		
    		double sum = 0.0;
    		for(int i = 0;i<arr.length;i++){
    			sum += arr[i];
    		}
    		
    		sum = sum - max - min;
    		
    		return sum / (arr.length - 2);
    	}
    	
    	//求最大值
    	public static int getMax(int[] arr){
    		int max = arr[0];
    		for(int i = 1;i<arr.length;i++){
    			if(arr[i] > max){
    				max = arr[i];
    			}
    		}
    		return max;
    	}
    	
    	//求最小值
    	public static int getMin(int[] arr){
    		int min = arr[0];
    		for(int i = 1;i<arr.length;i++){
    			if(arr[i] < min){
    				min = arr[i];
    			}
    		}
    		return min;
    	}
    	
    	//
    	public static int[] genArray(int n){
    		int[] arr = new int[n];
    		for(int i = 0;i<arr.length;i++){
    			arr[i] = (int)(Math.random() * 101);
    		}
    		return arr;
    	}
    	
    	public static void print(int[] arr){
    		for(int i = 0;i<arr.length;i++){
    			System.out.print(arr[i] + " ");
    		}
    		System.out.println();
    	}
    }
    

    7.定义一个int型数组,定义方法,把数组的元素变成原来的2倍

    /*
        定义一个int型数组,定义方法,把数组的元素变成原来的2倍
    */
    public class ArrayTest{
        public static void main(String[] args){
            int[] arr = {1,2,3,4,5};
            printArray(arr);
            
            doubleArray(arr);
            printArray(arr);
        }
        
        //将元素变成原来的2倍
        public static void doubleArray(int[] arr){
            for(int i = 0;i<arr.length;i++){
                arr[i] = arr[i] * 2;
            }
        }
        
        //打印数组元素
        public static void printArray(int[] arr){
            for(int i = 0;i<arr.length;i++){
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
    }

    8.数组的复制:返回值类型是数组

    判断堆空间中的两个对象是否是同一数组,可以使用 ==判断他们的地址值

    /*
    数组的复制:返回值类型是数组
    判断堆空间中的两个对象(数组)是否是同一个数组,可以使用 == 判断他们的地址值
    */
    public class CopyArrayDemo{
        public static void main(String[] args){
            int[] arr1 = genArray();
            print(arr1);
            int[] arr2 = copyArray(arr1);
            // int[] arr2 = arr1;
            print(arr2);
            
            // System.out.println(arr1 == arr2);//
            System.out.println(arr1);//[I@6d06d69c  类型@十六进制值
        }
        
        public static int[] genArray(){
            int[] arr = new int[5];
            for(int i = 0;i<arr.length;i++){
                int r = (int)(Math.random() * 50 + 1);
                arr[i] = r;
            }
            return arr;
        }
        
        public static void print(int[] arr){
            for(int i = 0;i<arr.length;i++){
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
        
        //int[]
        //int[]
        public static int[] copyArray(int[] arr){
            //创建一个和参数一样大小的数组
            int[] copy = new int[arr.length];
            //遍历参数的数组,把元素拷贝到新数组中
            for(int i = 0;i<arr.length;i++){
                copy[i] = arr[i];
            }
            
            return copy;
        }
    }

    9.自定义方法之间的互相调用

    /*
    演示自定义方法之间的互相调用
    */
    public class Demo{
        public static void main(String[] args){
            introduce("Zhangsan");
        }
    
        //
        public static void sayHi(){
            System.out.println("Hello");
        }
    
        //
        public static void introduce(String name){//name = "Zhangsan";
            sayHi();//调用自定义方法
            System.out.println("My name is : " + name);
        }
    }

    10.求两个double值得四则运算结果

    /*
        求两个double值的四则运算结果
    */
    public class Demo2{
        public static void main(String[] args){
            test(10.0,2.0);
        }
        
        //void
        //double d1,double d2
        public static void test(double d1,double d2){
            System.out.println("两个数的和是: " + (d1 + d2));
            System.out.println("两个数的差是: " + (d1 - d2));
            System.out.println("两个数的积是: " + (d1 * d2));
            System.out.println("两个数的商是: " + (d1 / d2));
        }
        
    }

    11.数组的常见异常

    /*
        数组操作的常见异常
            1.数组索引越界
            2.空指针异常
    */
    public class ExceptionDemo{
        public static void main(String[] args){
            int[] arr = new int[]{1,2,3,4,5,6};
            int[] arr2 = new int[]{7,8,9};
            int[] arr3 = new int[]{70,80,90};
            
            printArray(arr);
            printArray(arr2);
            printArray(arr3);
            
            boolean[] arr4 = {true,false,true,true};
            printArray(arr4);
            
            
            // System.out.println(arr.length);
            
            // for(int i = 0;i<3;i++){//根据数组的length属性动态的获取数组的长度
            // for(int i = 0;i<arr.length;i++){
                // System.out.println(arr[i]);
            // }
            
            // System.out.println(arr[0]);
            // System.out.println(arr[1]);
            // System.out.println(arr[2]);
            // System.out.println(arr[30]);//java.lang.ArrayIndexOutOfBoundsException:数组索引越界异常
            // for(int i = 0;i<arr.length;i++){
                // System.out.println(arr[i]);
            // }
            // arr = null;
            // System.out.println(arr[2]);//java.lang.NullPointerException:空指针异常
            // for(int i = 0;i<arr.length;i++){
                // System.out.println(arr[i]);
            // }
        }
        
        //void
        //int[] arr
        public static void printArray(int[] arr){
            for(int i = 0;i<arr.length;i++){
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
        
        public static void printArray(boolean[] arr){
            for(int i = 0;i<arr.length;i++){
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
    }

    12.合并两个数组

    /*
    合并两个数组
    data1 = [1,2,3]  data2 = [4,5,6]
    */
    public class MergeDemo{
        public static void main(String[] args){
            int[] arr1 = genArray();
            int[] arr2 = genArray();
            System.out.println("生成的第一个小数组是:");
            print(arr1);
            System.out.println("生成的第二个小数组是:");
            print(arr2);
            
            int[] res = merge(arr1,arr2);
            System.out.println("合并之后的数组是:");
            print(res);
        }
        
        //随机生成一个长度随机(1-5)的int数组(1-50)
        public static int[] genArray(){
            int len = (int)(Math.random() * 5 + 1);
            int[] arr = new int[len];
            for(int i = 0;i<arr.length;i++){
                arr[i] = (int)(Math.random() * 50 + 1);
            }
            return arr;
        }
        
        //合并两个数组
        public static int[] merge(int[] a,int[] b){
            int[] bigArray = new int[a.length + b.length];
            int index = 0;
            for(int i = 0;i<a.length;i++){
                bigArray[index] = a[i];
                index++;
            }
            
            for(int i = 0;i<b.length;i++){
                bigArray[index] = b[i];
                index++;
            }
            return bigArray;
            /*
            for(int i = 0;i<a.length;i++){
                bigArray[i] = a[i];
            }
            
            //
            for(int i = 0;i<b.length;i++){
                bigArray[i + a.length] = b[i];
            }
            return bigArray;
            */
        }
        
        public static void print(int[] arr){
            for(int i = 0;i<arr.length;i++){
                System.out.print(arr[i] + " ");
            }
            System.out.println();
        }
    }

    13.

  • 相关阅读:
    1250. Check If It Is a Good Array
    380. Insert Delete GetRandom O(1)
    378. Kth Smallest Element in a Sorted Matrix
    341. Flatten Nested List Iterator
    387. First Unique Character in a String
    454. 4Sum II
    D
    勇敢的妞妞 ( 状压 + 思维)
    P1879 [USACO06NOV]玉米田Corn Fields (状压dp入门)
    G
  • 原文地址:https://www.cnblogs.com/leo9257/p/8735414.html
Copyright © 2020-2023  润新知