美文网首页
简单的车牌生成器

简单的车牌生成器

作者: LY丶Smile | 来源:发表于2019-12-12 21:54 被阅读0次

基本思路

写着玩的,如有问题欢迎留言指正

车牌的规则(未考虑绿牌车)

  • 前两位标识归属地
  • 车牌一共五位,纯数字、一个字母加四个数字、两个字母加三个数字。目前基本就这三类

思路

  1. 归属地是固定数组,随机取一个用
  2. 随机指定车牌中的字母个数和数字个数
  3. 根据上面拿到的数值,分别生成字母和数字,并将其放到一个List中
  4. 将List打乱,得到一个五位的车牌
  5. 将归属地和上面得到的车牌号拼接在一起

附:源码

package com.smile.demo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class CarNoBuilder {

    private static final String[] CAR_ADDR = {
            "京A","京C","京E","京F","京H","京G","京B",
            "津A","津B", "津C", "津E",
            "沪A", "沪B", "沪D", "沪C",
            "渝A", "渝B", "渝C", "渝G", "渝H",
            "冀A", "冀B", "冀C", "冀D", "冀E", "冀F", "冀G", "冀H", "冀J", "冀R", "冀T",
            "豫A", "豫B", "豫C", "豫D", "豫E", "豫F","豫G","豫H","豫J","豫K","豫L","豫M","豫N","豫P","豫Q","豫R","豫S","豫U",
            "云A", "云C", "云D", "云E", "云F", "云G","云H","云J","云K","云L","云M","云N","云P","云Q","云R ","云S",
            "辽A", "辽B", "辽C", "辽D", "辽E", "辽F","辽G","辽H","辽J","辽K","辽L","辽M","辽N","辽P","辽V",
            "黑A", "黑B", "黑C", "黑D", "黑E", "黑F","黑G","黑H","黑J","黑K","黑L","黑M","黑N","黑P","黑R",
            "湘A", "湘B", "湘C", "湘D", "湘E", "湘F","湘G","湘H","湘J","湘K","湘L","湘M","湘N","湘U","湘S",
            "皖A", "皖B", "皖C", "皖D", "皖E", "皖F","皖G","皖H","皖J","皖K","皖L","皖M","皖N","皖P","皖Q","皖R","皖S",
            "鲁A", "鲁B", "鲁C", "鲁D", "鲁E", "鲁F","鲁G","鲁H","鲁J","鲁K","鲁L","鲁M","鲁N","鲁P","鲁Q","鲁R","鲁S","鲁U","鲁V","鲁Y",
            "新A", "新B", "新C", "新D", "新E", "新F","新G","新H","新J","新K","新L","新M","新N","新P","新Q","新R",
            "苏A", "苏B", "苏C", "苏D", "苏E", "苏F","苏G","苏H","苏J","苏K","苏L","苏M","苏N",
            "浙A", "浙B", "浙C", "浙D", "浙E", "浙F","浙G","浙H","浙J","浙K ","浙L",
            "赣A","赣B","赣C","赣D","赣E","赣F","赣G","赣H","赣J","赣K","赣L","赣M",
            "鄂A","鄂B","鄂C","鄂D","鄂E","鄂F","鄂G","鄂H","鄂J","鄂K" ,"鄂L","鄂M","鄂N","鄂P","鄂Q","鄂R","鄂S",
            "桂A","桂B","桂C","桂D","桂E","桂F","桂G","桂H","桂J","桂K","桂L","桂M","桂N","桂P" ,"桂R",
            "甘A","甘B","甘C","甘D","甘E","甘F","甘G","甘H","甘J","甘K","甘L","甘M" ,"甘N","甘P",
            "晋A" ,"晋B","晋C","晋D","晋E","晋F","晋H","晋J","晋K","晋L","晋M",
            "蒙A","蒙B","蒙C","蒙D","蒙E","蒙F","蒙G","蒙H","蒙J","蒙K","蒙L","蒙M",
            "陕A","陕B","陕C","陕D","陕E","陕F","陕G","陕H","陕J","陕K","陕U","陕V",
            "吉A","吉B","吉C","吉D","吉E","吉F","吉G","吉H","吉J",
            "闽A","闽B","闽C","闽D","闽E","闽F" ,"闽G","闽H","闽J","闽K",
            "贵A","贵B" ,"贵C","贵D","贵E" ,"贵F","贵G","贵H","贵J",
            "粤A","粤B","粤C","粤D","粤E","粤F","粤G","粤H","粤J","粤K","粤L","粤M","粤N","粤P","粤Q","粤R","粤S","粤T","粤U","粤V","粤W","粤X","粤Y","粤Z",
            "青A","青B","青C","青D","青E","青F","青G","青H",
            "藏A","藏B","藏C","藏D","藏E","藏F","藏G","藏H" ,"藏J",
            "川A","川B","川C","川D","川E","川F","川H","川J","川K","川L","川M","川Q","川R","川S","川T","川U","川V","川W","川X","川Y","川Z",
            "宁A","宁B","宁C","宁D",
            "琼A","琼B","琼C","琼D","琼E"
    };
    
    private static final String LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    private static Random random = new Random();
    
    
    /**
     * 随机生成车牌中的数字
     * @return
     */
    public static String getNumber() {
         return String.valueOf(random.nextInt(10));
    }
    
    /**
     * 随机取一个车牌归属地
     * @return
     */
    public static String getAddr() {
        return CAR_ADDR[random.nextInt(CAR_ADDR.length)];
    }
    
    /**
     * 随机生成字母,从给定的字母表中随机获取一个字母
     * @return
     */
    public static String getLetter() {
        int index = random.nextInt(26);
        return String.valueOf(LETTERS.charAt(index));
    }
    
    /**
     * 随机指定车牌中字母的数量
     * 根据当前的规则,车牌中字母的数量为0,1,2
     * @return
     */
    public static int getLetterCount() {
        return random.nextInt(3);
    }
    
    /**
     * 车牌号生成
     * @return
     */
    public static String getCarNo() {
        int letterCount = getLetterCount();
        int numberCount = 5 - letterCount;
        List<String>  list = new ArrayList<>(5);
        for(int i = 0; i < letterCount; i++) {
            list.add(getLetter());
        }
        for(int j = 0; j < numberCount; j++) {
            list.add(getNumber());
        }
        // 随机打乱顺序
        Collections.shuffle(list);
        StringBuilder sb = new StringBuilder();
        for(int x = 0; x < list.size(); x++) {
            sb.append(list.get(x));
        }
        String carNo = getAddr() + sb.toString();
        return carNo;
    }
    
    public static void main(String[] args) {
        while(true) {
            System.out.println(getCarNo());
        }
    }
    
}

相关文章

  • 简单的车牌生成器

    基本思路 写着玩的,如有问题欢迎留言指正 车牌的规则(未考虑绿牌车) 前两位标识归属地 车牌一共五位,纯数字、一个...

  • 上车牌照

    以前以为上车牌照很简单,其实是我太单纯了。 自从买了车以后,就开始着手办理车牌,但是车牌不是你想办就能办的。 车牌...

  • python生成器函数的应用场景举例---为copy过程添加进度

    首先看一个最简单的生成器,并判断是否是生成器,代码如下: 生成器的特点是可以迭代,通过dir 查看生成器的方法, ...

  • 生成器,迭代器,闭包,装饰器

    生成器 说下对生成器的理解,有几种创建方式,并用代码简单实现。 生成器:一般如果数量比较大,可以通过生成器来存储算...

  • 生成器(Generator)

    生成器(generator)是一种特殊的迭代器,它的实现更简单优雅。创建生成器的方法主要有两种:生成器函数和生成器...

  • Python 生成器和迭代器

    生成器和迭代器 生成器 Python 列表推导和生成器表达式 在上文中简单介绍了生成器的作用。在列表推导创建列表时...

  • OpenCV(三)车牌识别SVM训练与hsv定位

    SVM训练 简单来说,SVM就是用于区分不同的类型(车牌、非车牌)。SVM的训练数据既有特征又有标签,通过训练,让...

  • php yield生成器

    yield生成器 介绍 一个简单的例子就是使用生成器来重新实现 range() 函数。 标准的 range() 函...

  • 移动车车牌识别,车牌识别不简单

    本地化车牌OCR识别,告别网络,前端检测算法 离线车牌识别,德律风:妖三五,12七二妖三,五5

  • Python写个聊天机器人,智能识别

    一. 剖析一下生成器对象 先看一个简单的例子,我们创建一个生成器函数,然后生成一个生成器对象 表示G是一个生成器对...

网友评论

      本文标题:简单的车牌生成器

      本文链接:https://www.haomeiwen.com/subject/sldtnctx.html