• Java-笔记7


    public class ArrayExer1 {
        
        public static void main(String[] args) {
            int[][] arr = new int[][]{{3,5,8},{12,9},{7,0,6,4}};
            
            int sum = 0;//记录总和
            for(int i = 0;i < arr.length;i++){
                for(int j = 0;j < arr[i].length;j++){
                    sum += arr[i][j];
                }
            }
            
            System.out.println("总和为:" + sum);
        }
        
    }

    /*
     * 使用二维数组打印一个 10 行杨辉三角。
    
    【提示】
     1. 第一行有 1 个元素, 第 n 行有 n 个元素
     2. 每一行的第一个元素和最后一个元素都是 1
     3. 从第三行开始, 对于非第一个元素和最后一个元素的元素。即:
    yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
     * 
     */
    public class YangHuiTest {
        
        public static void main(String[] args) {
            //1.声明并初始化二维数组
            int[][] yangHui = new int[10][];
            
            //2.给数组的元素赋值
            for(int i = 0;i < yangHui.length;i++){
                yangHui[i] = new int[i + 1];
                
                //2.1 给首末元素赋值
                yangHui[i][0] = yangHui[i][i] = 1;
                //2.2 给每行的非首末元素赋值
                //if(i > 1){
                for(int j = 1;j < yangHui[i].length - 1;j++){
                    yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];
                }
                //}
            }
            
            
            //3.遍历二维数组
            for(int i = 0;i < yangHui.length;i++){
                for(int j = 0;j < yangHui[i].length;j++){
                    System.out.print(yangHui[i][j] + "  ");
                }
                System.out.println();
            }
            
            
            
        }
        
        
    }

    /*
     * 算法的考查:求数值型数组中元素的最大值、最小值、平均数、总和等
     * 
     * 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,
     * 然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。    
     * 要求:所有随机数都是两位数。
     * 
     * [10,99]
     * 公式:(int)(Math.random() * (99 - 10 + 1) + 10)
     * 
     */
    public class ArrayTest1 {
        public static void main(String[] args) {
            int[] arr = new int[10];
            
            for(int i = 0;i < arr.length;i++){
                arr[i] = (int)(Math.random() * (99 - 10 + 1) + 10);
            }
            
            //遍历
            for(int i = 0;i < arr.length;i++){
                System.out.print(arr[i] + "	");
            }
            System.out.println();
            
            //求数组元素的最大值
            int maxValue = arr[0];
            for(int i = 1;i < arr.length;i++){
                if(maxValue < arr[i]){
                    maxValue = arr[i];
                }
            }
            System.out.println("最大值为:" + maxValue);
            
            //求数组元素的最小值
            int minValue = arr[0];
            for(int i = 1;i < arr.length;i++){
                if(minValue > arr[i]){
                    minValue = arr[i];
                }
            }
            System.out.println("最小值为:" + minValue);
            //求数组元素的总和
            int sum = 0;
            for(int i = 0;i < arr.length;i++){
                sum += arr[i];
            }
            System.out.println("总和为:" + sum);
            //求数组元素的平均数
            int avgValue = sum / arr.length;
            System.out.println("平均数为:" + avgValue);
        }
    }
    /*
     * 使用简单数组
    (1)创建一个名为ArrayExer2的类,在main()方法中声明array1和array2两个变量,他们是int[]类型的数组。
    (2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。
    (3)显示array1的内容。
    (4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)。打印出array1。
     * 
     * 思考:array1和array2是什么关系?array1和array2地址值相同,都指向了堆空间的唯一的一个数组实体。
     * 拓展:修改题目,实现array2对array1数组的复制
     */
    public class ArrayExer2 {
        public static void main(String[] args) {  //alt + /
            int[] array1,array2;
            
            array1 = new int[]{2,3,5,7,11,13,17,19};
            
            //显示array1的内容
            for(int i = 0;i < array1.length;i++){
                System.out.print(array1[i] + "	");
            }
            
            //赋值array2变量等于array1
            //不能称作数组的复制。
            array2 = array1;
            
            //修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)
            for(int i = 0;i < array2.length;i++){
                if(i % 2 == 0){
                    array2[i] = i;
                }
                
            }
            System.out.println();
            //打印出array1
            for(int i = 0;i < array1.length;i++){
                System.out.print(array1[i] + "	");
            }
        }
    }
    /*
     * 算法的考查:数组的复制、反转、查找(线性查找、二分法查找)
     * 
     * 
     */
    public class ArrayTest2 {
        
        public static void main(String[] args) {
            
            String[] arr = new String[]{"JJ","DD","MM","BB","GG","AA"};
            
            
            //数组的复制(区别于数组变量的赋值:arr1 = arr)
            String[] arr1 = new String[arr.length];
            for(int i = 0;i < arr1.length;i++){
                arr1[i] = arr[i];
            }
            
            //数组的反转
            //方法一:
    //        for(int i = 0;i < arr.length / 2;i++){
    //            String temp = arr[i];
    //            arr[i] = arr[arr.length - i -1];
    //            arr[arr.length - i -1] = temp;
    //        }
            
            //方法二:
    //        for(int i = 0,j = arr.length - 1;i < j;i++,j--){
    //            String temp = arr[i];
    //            arr[i] = arr[j];
    //            arr[j] = temp;
    //        }
            
            //遍历
            for(int i = 0;i < arr.length;i++){
                System.out.print(arr[i] + "	");
            }
            
            System.out.println();
            //查找(或搜索)
            //线性查找:
            String dest = "BB";
            dest = "CC";
            
            boolean isFlag = true;
            
            for(int i = 0;i < arr.length;i++){
                
                if(dest.equals(arr[i])){
                    System.out.println("找到了指定的元素,位置为:" + i);
                    isFlag = false;
                    break;
                }
                
            }
            if(isFlag){
                System.out.println("很遗憾,没有找到的啦!");
                
            }
            //二分法查找:(熟悉)
            //前提:所要查找的数组必须有序。
            int[] arr2 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
            
            int dest1 = -34;
            dest1 = 35;
            int head = 0;//初始的首索引
            int end = arr2.length - 1;//初始的末索引
            boolean isFlag1 = true;
            while(head <= end){
                
                int middle = (head + end)/2;
                
                if(dest1 == arr2[middle]){
                    System.out.println("找到了指定的元素,位置为:" + middle);
                    isFlag1 = false;
                    break;
                }else if(arr2[middle] > dest1){
                    end = middle - 1;
                }else{//arr2[middle] < dest1
                    head = middle + 1;
                }
    
                
            }
            
            if(isFlag1){
                System.out.println("很遗憾,没有找到的啦!");
            }
            
            
        }
    }

     

    /*
     * 数组的冒泡排序的实现
     * 
     */
    public class BubbleSortTest {
        public static void main(String[] args) {
            
            int[] arr = new int[]{43,32,76,-98,0,64,33,-21,32,99};
            
            //冒泡排序
            for(int i = 0;i < arr.length - 1;i++){
                
                for(int j = 0;j < arr.length - 1 - i;j++){
                    
                    if(arr[j] > arr[j + 1]){
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                    
                }
                
            }
            
            
            
            
            for(int i = 0;i < arr.length;i++){
                System.out.print(arr[i] + "	");
            }
            
        }
    }
    /**
     * 快速排序
     * 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,
     * 则分别对这两部分继续进行排序,直到整个序列有序。
     * @author shkstart
     * 2018-12-17
     */
    public class QuickSort {
        private static void swap(int[] data, int i, int j) {
            int temp = data[i];
            data[i] = data[j];
            data[j] = temp;
        }
    
        private static void subSort(int[] data, int start, int end) {
            if (start < end) {
                int base = data[start];
                int low = start;
                int high = end + 1;
                while (true) {
                    while (low < end && data[++low] - base <= 0)
                        ;
                    while (high > start && data[--high] - base >= 0)
                        ;
                    if (low < high) {
                        swap(data, low, high);
                    } else {
                        break;
                    }
                }
                swap(data, start, high);
                
                subSort(data, start, high - 1);//递归调用
                subSort(data, high + 1, end);
            }
        }
        public static void quickSort(int[] data){
            subSort(data,0,data.length-1);
        }
        
        
        public static void main(String[] args) {
            int[] data = { 9, -16, 30, 23, -30, -49, 25, 21, 30 };
            System.out.println("排序之前:
    " + java.util.Arrays.toString(data));
            quickSort(data);
            System.out.println("排序之后:
    " + java.util.Arrays.toString(data));
        }
    }

     

     

     

    package com.atguigu.java;
    
    import java.util.Arrays;
    
    /*
     * java.util.Arrays:操作数组的工具类,里面定义了很多操作数组的方法
     * 
     * 
     */
    public class ArraysTest {
        public static void main(String[] args) {
            
            //1.boolean equals(int[] a,int[] b):判断两个数组是否相等。
            int[] arr1 = new int[]{1,2,3,4};
            int[] arr2 = new int[]{1,3,2,4};
            boolean isEquals = Arrays.equals(arr1, arr2);
            System.out.println(isEquals);
            
            //2.String toString(int[] a):输出数组信息。
            System.out.println(Arrays.toString(arr1));
            
                
            //3.void fill(int[] a,int val):将指定值填充到数组之中。
            Arrays.fill(arr1,10);
            System.out.println(Arrays.toString(arr1));
            
    
            //4.void sort(int[] a):对数组进行排序。
            Arrays.sort(arr2);
            System.out.println(Arrays.toString(arr2));
            
            //5.int binarySearch(int[] a,int key)
            int[] arr3 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
            int index = Arrays.binarySearch(arr3, 210);
            if(index >= 0){
                System.out.println(index);
            }else{
                System.out.println("未找到");
            }
            
            
        }
    }
    package com.atguigu.java;
    /*
     * 数组中的常见异常:
     * 1. 数组角标越界的异常:ArrayIndexOutOfBoundsExcetion
     * 
     * 2. 空指针异常:NullPointerException
     * 
     */
    public class ArrayExceptionTest {
        public static void main(String[] args) {
            
            //1. 数组角标越界的异常:ArrayIndexOutOfBoundsExcetion
            int[] arr = new int[]{1,2,3,4,5};
            
    //        for(int i = 0;i <= arr.length;i++){
    //            System.out.println(arr[i]);
    //        }
            
    //        System.out.println(arr[-2]);
            
    //        System.out.println("hello");
            
            //2.2. 空指针异常:NullPointerException
            //情况一:
    //        int[] arr1 = new int[]{1,2,3};
    //        arr1 = null;
    //        System.out.println(arr1[0]);
            
            //情况二:
    //        int[][] arr2 = new int[4][];
    //        System.out.println(arr2[0][0]);
            
            //情况三:
            String[] arr3 = new String[]{"AA","BB","CC"};
            arr3[0] = null;
            System.out.println(arr3[0].toString());
        }
    }
  • 相关阅读:
    haoop 断电后导致block文件损坏
    笔记本上小固态硬盘的使用
    centos 7安装部署docker
    用msbuild构建应用
    清风注解-Swift程序设计语言:Point11~15
    清风注解-Swift程序设计语言:Point6~10
    清风注解-Swift程序设计语言
    享骑电单车投诉
    yaf不输出致命错误(Fatal error)的原因(之一)
    如何面试 PHP 工程师?
  • 原文地址:https://www.cnblogs.com/LXL616/p/10854100.html
Copyright © 2020-2023  润新知