【java】【高级拓展1】常见算法&&正则表达式&&异常

目录

1 算法

1.1 简单认识算法

1.2 常见算法 - 排序算法

 1.2.1 冒泡排序

1.2.2 选择排序 

1.3 常见算法-查找算法

1.3.1 基本查询(顺序查找)==不好(性能不好)

 1.3.2 二分查找(折半查找)

2 正则表达式

2.1 概述、初体验

2.1.1 作用一 检验数据合法性

2.1.2 作用二 在一段文本中查找满足要求的内容

2.2 书写规范

2.3 应用案例

2.4 用于查找信息

2.5 用于搜索替换、分隔内容

3 异常 (就是代表程序出现问题)

3.1 认识异常

3.1.1 运行时异常

3.1.2 编译时异常 

3.2 自定义异常

3.2.1 自定义运行异常

3.2.2 自定义编译异常

3.3 异常的处理


前言:java的算法(排序算法、查找算法)、正则表达式

1 算法

1.1 简单认识算法

【java】【高级拓展1】常见算法&&正则表达式&&异常_第1张图片

  

1.2 常见算法 - 排序算法

【java】【高级拓展1】常见算法&&正则表达式&&异常_第2张图片

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第3张图片

 

 1.2.1 冒泡排序

【java】【高级拓展1】常见算法&&正则表达式&&异常_第4张图片

package com.runa;



import java.util.Arrays;

public class TestBubble {
    public static void main(String[] args) {
        // 1 准备一个数组
        int[] arr = {5, 2, 3, 1};

        // 2 定义一个循环控制 排几轮
        for (int i = 0; i < arr.length - 1; i++) {
            // i = 0  1  2      【5, 2, 3, 1】   次数
            // i = 0  第一轮       0   1  2        3
            // i = 1 第二轮        0   1           2
            // i = 2 第三轮        0               1

            // 3 定义一个循环控制器每轮比较几次
            for (int j = 0; j < arr.length - 1 - i; j++) {
                // 判断当前位置的值,是否大于后一个位置处的元素之,如果打则交换
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = temp;

                }

            }

        }
        System.out.println(Arrays.toString(arr));
    }
}

 

1.2.2 选择排序 

【java】【高级拓展1】常见算法&&正则表达式&&异常_第5张图片

 

package com.runa;

import java.util.Arrays;

public class TestSelect {
    public static void main(String[] args) {
        TestSelect  a = new TestSelect();
        a.select1();
        a.select2();
    }

    public void select1(){
        // 1 准备好一个数组
        int[] arr = {5, 1, 3, 2};
        //           0  1  2  3

        // 2 控制选择几轮
        for (int i = 0; i < arr.length - 1; i++) {
            // i = 0   j =   1   2   3
            // i = 1   j =   2   3
            // i = 2   j =   3

            // 3 控制没来选择几次
            for (int j = i + 1; j < arr.length; j++) {
                // 判断当前位置是否大于后面位置处的元素值,大于则交换
                if(arr[i] > arr[j]){
                    int temp = arr[i];
                    arr[i] =arr[j];
                    arr[j] = temp;
                }


            }

        }
        System.out.println(Arrays.toString(arr));

    }

    public void select2(){
        // 1 准备好一个数组
        int[] arr = {5, 1, 3, 2};
        //           0  1  2  3

        // 2 控制选择几轮
        for (int i = 0; i < arr.length - 1; i++) {
            // i = 0   j =   1   2   3
            // i = 1   j =   2   3
            // i = 2   j =   3
            int minIndex = i;
            // 3 控制没来选择几次
            for (int j = i + 1; j < arr.length; j++) {
                // 判断当前位置是否大于后面位置处的元素值,大于则交换
                if(arr[minIndex] > arr[j]){
                    minIndex = j;
                }
            }
            // 决定是否交换
            if(i != minIndex){
                int temp = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = temp;
            }

        }
        System.out.println(Arrays.toString(arr));

    }

}

 

 

1.3 常见算法-查找算法

1.3.1 基本查询(顺序查找)==不好(性能不好)

【java】【高级拓展1】常见算法&&正则表达式&&异常_第6张图片

 1.3.2 二分查找(折半查找)

【java】【高级拓展1】常见算法&&正则表达式&&异常_第7张图片

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第8张图片

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第9张图片

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第10张图片

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第11张图片

 

【java】【高级拓展1】常见算法&&正则表达式&&异常_第12张图片

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第13张图片

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第14张图片

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第15张图片

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第16张图片

 

package com.runa;

public class TestBinary {
    public static void main(String[] args) {
        // 1 准备好一个有序数组
        int[] arr = {7, 23, 79, 81, 103, 127, 131, 147};
        System.out.println(binarySearch(arr, 81));
    }
    public static int binarySearch(int[] arr, int data){
        // 1 定义2个变量,一个在左边,一个在右边
        int left = 0;
        int right = arr.length - 1;

        // 2 定义一个循环控制折半
        while(left <= right){
            // 3 每次折半, 都算出中间位置处索引
            int middle = (left + right) / 2;
            // 4 判断当前要找的元素值,与中间位置处的元素值的大小情况
            if(data < arr[middle]){
                //5 往左边找, 截止位置(右边位置) = 中间位置 - 1
                right = middle - 1;
            }else if(data > arr[middle]){
                // 往右边找,起始位置(左边位置) = 中间位置 +  1
                left = middle + 1;
            }else{
                return middle;
            }
        }
        return -1;//  -1 特殊结果,就代表没有找到数据,数组中不存在该数据
    }
}

 

 扩展java提供的:

 

2 正则表达式

2.1 概述、初体验

【java】【高级拓展1】常见算法&&正则表达式&&异常_第17张图片

2.1.1 作用一 检验数据合法性

package com.runa;
// 需求:校验QQ号码是否正确,要求全部是数字,长度(6-20)之间,不能以0开头
public class TestRegex1 {
    public static void main(String[] args) {
        System.out.println("------------------使用自己写的方法------------------------------");
        System.out.println(checkQQ(null));
        System.out.println(checkQQ("251425415"));
        System.out.println(checkQQ("05555dff555"));
        System.out.println(checkQQ("55555dff555"));
        System.out.println("----------------------使用正则表达式--------------------------");
        System.out.println(checkQQ1(null));
        System.out.println(checkQQ1("251425415"));
        System.out.println(checkQQ1("05555dff555"));
        System.out.println(checkQQ1("55555dff555"));
    }


    // 自己写的方法
    public static boolean checkQQ(String qq){
        // 1 判断qq号码是否为null
        if(qq == null || qq.startsWith("0") || qq.length() < 6 || qq.length() > 20){
            return false;
        }

        // 2 QQ 至少不是null,不是以0开头,满足6-20之间长度
        // 判断qq 号码中是否都是数字
        // qq = 25144s222
        for (int i = 0; i < qq.length(); i++) {
            // 根据索引提取当前位置处的字符
            char ch = qq.charAt(i);
            // 判断ch记住的字符,如果不是数字,qq号码不合法
            if (ch < '0' || ch > '9') {
                return false;
            }
        }
        // 3 说明qq号码合法
        return true;
    }

    public static boolean checkQQ1(String qq){
        return qq != null && qq.matches("[1-9]\\d{5,19}");
    }
}

【java】【高级拓展1】常见算法&&正则表达式&&异常_第18张图片

2.1.2 作用二 在一段文本中查找满足要求的内容

见2.4

2.2 书写规范

【java】【高级拓展1】常见算法&&正则表达式&&异常_第19张图片

 

【java】【高级拓展1】常见算法&&正则表达式&&异常_第20张图片 ​​​​​​​【java】【高级拓展1】常见算法&&正则表达式&&异常_第21张图片

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第22张图片

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第23张图片 

 

2.3 应用案例

【java】【高级拓展1】常见算法&&正则表达式&&异常_第24张图片

package com.runa;

import java.util.Scanner;

public class TestRegex2 {
    public static void main(String[] args) {
        checkPhone();
        checkEmail();
    }

    public static void checkPhone(){
        Scanner sc = new Scanner(System.in);

        while (true) {
            System.out.println("请您输入您的电话号码(手机|座机):");
            String phone = sc.nextLine(); //接收一行数据
            //18625654598 010-26562544  010335588444
            if(phone.matches("(1[3-9]\\d{9})|(0\\d{2,7}-?[1-9]\\d{4,19})")){
                System.out.println("您输入的号码格式正确~~");
                break;
            }else {
                System.out.println("您输入的号码格式不正确~~");
            }
        }
    }

    public static void checkEmail(){
        Scanner sc = new Scanner(System.in);

        while (true) {
            System.out.println("请您输入您的邮箱:");
            String phone = sc.nextLine(); //接收一行数据
            //[email protected]
            if(phone.matches("\\w{2,}@\\w{2,20}(\\.\\w{2,10}){1,2}")){
                System.out.println("您输入的邮箱格式正确~~");
                break;
            }else {
                System.out.println("您输入的邮箱格式不正确~~");
            }
        }
    }
}

 

2.4 用于查找信息

【java】【高级拓展1】常见算法&&正则表达式&&异常_第25张图片

  

2.5 用于搜索替换、分隔内容

【java】【高级拓展1】常见算法&&正则表达式&&异常_第26张图片

 ​​​​​​​【java】【高级拓展1】常见算法&&正则表达式&&异常_第27张图片

【java】【高级拓展1】常见算法&&正则表达式&&异常_第28张图片

 

  

3 异常 (就是代表程序出现问题)

3.1 认识异常

【java】【高级拓展1】常见算法&&正则表达式&&异常_第29张图片

 ​​​​​​​​​​​​​​​​​​​​​【java】【高级拓展1】常见算法&&正则表达式&&异常_第30张图片

3.1.1 运行时异常

【java】【高级拓展1】常见算法&&正则表达式&&异常_第31张图片

 

 

3.1.2 编译时异常 

 ​​​​​​​【java】【高级拓展1】常见算法&&正则表达式&&异常_第32张图片

【java】【高级拓展1】常见算法&&正则表达式&&异常_第33张图片

 

3.2 自定义异常

【java】【高级拓展1】常见算法&&正则表达式&&异常_第34张图片

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第35张图片

3.2.1 自定义运行异常

【java】【高级拓展1】常见算法&&正则表达式&&异常_第36张图片

 

【java】【高级拓展1】常见算法&&正则表达式&&异常_第37张图片

 

3.2.2 自定义编译异常

 【java】【高级拓展1】常见算法&&正则表达式&&异常_第38张图片【java】【高级拓展1】常见算法&&正则表达式&&异常_第39张图片

  

3.3 异常的处理

【java】【高级拓展1】常见算法&&正则表达式&&异常_第40张图片

 ​​​​​​​【java】【高级拓展1】常见算法&&正则表达式&&异常_第41张图片

  【java】【高级拓展1】常见算法&&正则表达式&&异常_第42张图片

 

 

你可能感兴趣的:(java,java,算法,正则表达式,异常)