Java生成手机号码

22 篇文章 22 订阅
订阅专栏
1 篇文章 0 订阅
订阅专栏


前言

在项目开发中,遇到了一个需求就是随机生成电话号码(中国地区),将实现过程进行记录。


提示:以下是本篇文章正文内容,下面案例可供参考

一、实现代码

在实际项目中我为了便于分层维护,因此代码中会出现枚举,枚举类对当前工具类的核心代码无影响,读者可以根据自己的需求来决定是否使用枚举。同时为了提高代码的简洁性与可读性,在项目我也引入了Lombok工具包。

1. 运营商枚举

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 运营商枚举
 *
 * @author zhangrongkang
 * @since 2023/4/2
 */
@Getter
@AllArgsConstructor
public enum OperatorEnum {

    /**
     * 中国移动
     */
    CHINA_MOBILE(0, "中国移动"),
    /**
     * 中国联通
     */
    CHINA_UNICOM(1, "中国联通"),
    /**
     * 中国电信
     */
    CHINA_TELECOM(2, "中国电信");

    /**
     * 运营商识别码
     */
    private final Integer code;

    /**
     * 运营商名称
     */
    private final String name;

    /**
     * 通过运营商识别码获取运营商名称
     *
     * @param code 运营商识别码
     * @return 运营商名称
     */
    public static String getOperateNameByCode(Integer code) {
        // 循环遍历所有枚举
        for (OperatorEnum value : OperatorEnum.values()) {
            // 返回当前运营商名称
            if (value.code.equals(code)) {
                return value.name;
            }
        }
        return null;
    }
}

2. 手机号码工具类

import com.zrkizzy.seckill.enums.OperatorEnum;
import java.util.Random;

/**
 * 随机生成电话号码工具类
 *
 * @author zhangrongkang
 * @since 2023/4/2
 */
public class PhoneNumberUtil {

    /**
     * 中国移动
     */
    private static final String[] CHINA_MOBILE = {
            "134", "135", "136", "137", "138", "139", "150", "151", "152", "157", "158", "159",
            "182", "183", "184", "187", "188", "178", "147", "172", "198"
    };

    /**
     * 中国联通
     */
    private static final String[] CHINA_UNICOM = {"130", "131", "132", "145", "155", "156", "166", "171", "175", "176", "185", "186", "166"};

    /**
     * 中国电信
     */
    private static final String[] CHINA_TELECOM = {"133", "149", "153", "173", "177", "180", "181", "189", "199"};

    /**
     * 生成手机号方法
     *
     * @param operator 运营商识别码
     */
    public static String createPhoneNumber(int operator) {
        // 定义随机数对象
        Random random = new Random();
        // 定义StringBuilder对象用于存储生成的手机号
        StringBuilder builder = new StringBuilder();
        // 手机号前三位
        String mobilePrefix = null;
        // 随机生成指定运营商中的手机前三位
        mobilePrefix = switch (operator) {
            // 中国移动
            case 0 -> CHINA_MOBILE[random.nextInt(CHINA_MOBILE.length)];
            // 中国联通
            case 1 -> CHINA_UNICOM[random.nextInt(CHINA_UNICOM.length)];
            // 中国电信
            case 2 -> CHINA_TELECOM[random.nextInt(CHINA_TELECOM.length)];
            default -> "运营商错误";
        };
        // 拼接手机号前三位
        builder.append(mobilePrefix);
        // 定义辅助变量用于手机号后八位的生成
        int temp;
        // 生成手机号后8位
        for (int i = 0; i < 8; i++) {
            // 随机生成一个 [0, 9] 以内的整数
            temp = random.nextInt(10);
            // 拼接当前随机数
            builder.append(temp);
        }
        // 将生成的电话号码返回
        return builder.toString();
    }

    public static void main(String[] args) {
        Random random = new Random();
        for (int i = 1; i <= 10; i++) {
            // 随机运营商识别码
            int code = random.nextInt(3);
            System.out.println(OperatorEnum.getOperateNameByCode(code) + ": " +createPhoneNumber(code));
        }
    }
}

二、运行结果

这里随机生成10个电话号码,运营商随机
在这里插入图片描述


总结

以上就是在Java中生成手机号码的一个工具类,实现逻辑相对简单,将三大运营商的电话号码前缀集合作为成员属性,接着对手机号的后八位的每一位都进行随机的生成再拼接。但是我这样的生成方法存在的问题是无法确保不会生成重复的手机号码,虽然只是重复的概率比较小,如果有大佬有更好的方法和逻辑欢迎在评论区留言,与大佬一起进步!


修改时间修改内容
2023/04/03将运营商的访问权限修饰符由public改为private
Java 生成随机数的 5 种方式,你知道几种?
2301_79098686的博客
04-28 805
一般像这样的大企业都有好几轮面试,所以自己一定要花点时间去收集整理一下公司的背景,公司的企业文化,俗话说「知己知彼百战不殆」,不要盲目的去面试,还有很多人关心怎么去跟HR谈薪资。这边给大家一个建议,如果你的理想薪资是30K,你完全可以跟HR谈33~35K,而不是一下子就把自己的底牌暴露了出来,不过肯定不能说的这么直接,比如原来你的公司是25K,你可以跟HR讲原来的薪资是多少,你们这边能给到我的是多少?你说我这边希望可以有一个20%涨薪。
Java随机密码生成并和邮箱、手机号匹配
09-02
主要介绍了Java随机密码生成并和邮箱、手机号匹配的相关资料,需要的朋友可以参考下
Java 随机生成中文姓名,手机号,邮编,住址
T.Y 专栏
09-20 6107
import java.util.HashMap;  import java.util.Map;      /**  * 随机生成中文姓名,性别,Email,手机号,住址  * @author X-rapido  */  public class RandomValue {      public s
java 最新手机号码、电话号码正则表达式
12-15
最新手机号码、电话号码正则表达式
手机端jad生成java
04-10
三星等手机安装需要生成jad文件,该软件能够在手机端生成
Java随机生成手机短信验证码的方法
09-03
主要介绍了Java随机生成手机短信验证码的方法,涉及Java数学运算计算随机数及字符串操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
java随机生成用户名(qq、手机、邮箱、虚拟姓名等格式用户名)
07-05
代码简单干净,易于扩展。 随机生成用户名样例: 339063 77188 fengjr1980@yeah.net 97133 xupe19870102@sohu.com 18955990722 2145028 25070167 299966 13329809029 18739552501 77223 725525865 cheng1991 chub1974 13290062609 wangf19750725 caot19850619 545121 qianih19760611@msn.com 15208376363 xieww1979 shixd0904@126.com 18035677437 80892 18967033182 18923271615 15506730128 19741 fangi0713 15829813954 58285 yuanr19730429 shenpk 79607 15430 15226507276 13905108731 71852 qianmp19900629 15578331045 28116 18636868380 41560 zhengk1009@qq.com chuh19901023 269195 5678146 29585 18416167445 konghs1014 13404997586 30505 13647749758 13153649262 18779413966 wangqq1985 18906839566 18915522113 13392180833 1539516 zhaod19960502@ask.com 422424 heee0615 fengc@163.com 39174 xuyv19780415 15463681074 700812 73013 xuh0513 15505384990 hedd19940702 54021 xum19930812 youy1991 qiner 18033283015 yangwc 57195 qinu shenk0513 zhoufg 94597 95435 zhanvn1985 qiankh0104@ask.com kongw1993 zhuhv 15922309734 15015131852 15617928674 13135363801 18249225151 81438 13163635474 18615772400 hes0510 460915 wum19781014 491159 shenh1973 625701 34613 15732006897 fengdk1985 18517435664 13412117745 10157 chuza1993@163.com zhaokk0810@sina.com 34270 7744626 sunb0122 71114 91762 18506579548 yangmy0227 18791566645 13250565847 jiangvk1977 15250922291 37579 wangci1965 wangpq wango19850516 18531237843 18589683471 hegl1990 18714299209 zhant@gmail.com 29016 zhux1969 xiez1113 zhengtw 15490897758 18917969768 18149215132 18608279756 17149 18644736737 zhaov19880816 xuy@aol.com 5854142 18408454618 qinl1988 xubl1990 18852302621 18985792169 42928 18622907192 fanggs19960616@163.com 25150 47585 15086377222 617299 13447565144 668953950 4342797 18638890078 fangiq0615 zhuo19701127@ask.com 421528 15690966759 18058824538 18194138008 15770603106 heag0813 15793392577 470979 18402649812 1791830 18397977938 shukj19960528 87052642 chulu0119 jiangj1986 13210747847 47359 80638214 zhuey0405 94017 13636960571 18939715988 yuani0529@msn.com 58081 caodm1989 18420167788 13951603849 10205 164883 15513277337 29553 15011669462 87997 zhanji 29763568 13032055621 13617051541 lit
Java 随机生成任意组手机电话号码
最新发布
天道酬勤,地道酬善,人道酬诚,商道酬信,业道酬精
04-28 1967
java生成11位电话号码,只需两行代码,可自定义手机号
ChatGPT:java随机生成手机号码
User_xiangpeng的专栏
04-03 1881
合理利用它,真的能大大提高我们学习和工作效率,太强大了!笔者:java随机生成中国手机号码
java随机姓名_Java随机生成姓名、手机号
weixin_27787297的博客
02-12 395
import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import java.util.Random;public class base1 {public static Strin...
java随机生成手机号码、18位code并写入csv文件
lemon_linaa的博客
03-14 989
【代码】java随机生成手机号码、18位code并写入csv文件。
基于Java随机生成手机短信验证码的实例代码
08-26
主要介绍了Java随机生成手机短信验证码的实例代码,代码分为哦简单版和复杂版,需要的朋友可以参考下
随机生成11位数字
07-31
可以生成随机数,稍微加以修改即可生成想要的位数
【学习笔记】Java两种简单方法随机生成电话号码
weixin_45500051的博客
09-19 2606
两种方法都很简单本质上没有什么区别,第二种方法就是代码量少点,三大运营商的电话号码前三位都是固定的,剩余的八位都是随机。最终生成出来的号码都是三大运营商可用的号码,下一篇文章是从数据文件里面提取处理每个用户在网站上面的上传、下载、和总流量的数据。 1、 import java.io.File; import java.io.FileOutputStream; import java.io.IOEx...
用R语言java实现随机生成手机号码
weixin_33851429的博客
06-07 177
为什么80%的码农都做不了架构师?>>> ...
java-生成手机号
风子的博客
11-18 1694
public static int getNum(int start,int end) { return (int)(Math.random()*(end-start+1)+start); } /** * 返回手机号码 */ private static String[] telFirst="134,135,136,137,138,139,150,151,152,157,158,159,130,131,132,155,156,133,153".split(",")..
Java 生成随机手机号,并写入数据库
weixin_33971130的博客
09-07 9241
public int getNum(int start,int end) { return (int)(Math.random()*(end-start+1)+start); } /** * 返回手机号码 */ private String[] telFirst="158,138".split(","); private String getT...
java 手机号码生成_用R语言java实现随机生成手机号码
weixin_30725829的博客
02-12 1135
因为测试过程中需要不断用到不同的手机号码,加上本人有选择困难症,故此直接用代码生成随机号码,以免让自己犹豫应该输入哪个手机码号~觉得让自己随意选择号码跟给小孩取名的难度是一样一样的。java:package main;import java.util.ArrayList;import java.util.Random;/*** @author 苏宝伢 E-mail:by.su@qq.com* @v...
随机生成手机号
weixin_30556959的博客
07-31 588
public class Phone { public static void getPhoneNum() { String[] Top3 = {"133", "149", "153", "173", "177", "180", "181", "189", "199", "130", "131", "132", ...
java 生成随机电话号码方法
04-11
可以使用Java内置的Random类,结合数字和随机字符生成一个随机的电话号码,例如: ```java import java.util.Random; public class RandomPhoneGenerator { public static void main(String[] args) { String phoneNumber = generatePhoneNumber(); System.out.println(phoneNumber); } public static String generatePhoneNumber() { Random random = new Random(); String[] phoneNumberPrefix = {"13", "14", "15", "16", "17", "18", "19"}; // 手机号码前缀 int index = random.nextInt(phoneNumberPrefix.length); // 随机生成前缀下标 String prefix = phoneNumberPrefix[index]; StringBuilder sb = new StringBuilder(prefix); for (int i = 0; i < 8; i++) { // 随机生成后8位数字 sb.append(random.nextInt(10)); } return sb.toString(); } } ``` 上述代码将生成一个随机的11位电话号码,以13~19开头。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • HTML设置图片为页面背景 113320
  • 线性表顺序表示和实现(C语言) 48938
  • 交换机配置VLAN(思科模拟器实现) 35911
  • org.springframework.http.converter.HttpMessageNotWritableException...解决方法 28018
  • Base64解码遇到java.lang.IllegalArgumentException: Illegal base64 character d 23806

分类专栏

  • LeetCode 5篇
  • Java工具类集合 1篇
  • 数据结构 3篇
  • 计算机网络 2篇
  • BUG及问题的解决 13篇
  • 架构师成长道路 13篇
  • 操作系统作业调度算法 2篇
  • Java设计模式 3篇
  • 笔记 22篇

最新评论

  • Java生成手机号码

    Dream_飞翔: 看运营商

  • Java生成手机号码

    wy_yh: 手机号第二位不应该是3-9的任意数字吗?

  • CSDN实训 - Java模拟二次验证码(动态令牌)

    qq_42908707: 大佬 求求那几个工具类,您的链接失效了

  • 线性表顺序表示和实现(C语言)

    2301_81963020: 为什么老是显示ld returned 1exit status

  • HBuilderX运行时报404错误解决

    puppy*: 就是要先创建一个项目,在项目下面创建html就可以了!

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 我的创作纪念日
  • 第358场周赛
  • Java分批将List数据导入数据库
2023年4篇
2022年8篇
2021年48篇
2020年6篇

目录

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream_飞翔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

4617作文网五行四柱算命马姓起名大全女孩甘姓氏男孩起名沈阳大藏起名曹姓女孩子起名周公解梦梦见姐姐骂我装修公司的起名字千明周易取名好吗阴阳周易八卦女孩起名曾最古老原版周公解梦书女孩起名简短好听含字起名女孩朱姓猪小孩起名周易取名字测分宝宝起名杨子什么有起名字的软件吗?店铺起名菩提店八字算命为什么不准赵字起名女孩名字大全三字免费八字算命结婚时间今年给少女起名童装店免费起名字大全大建筑工程公司起名瓷都免费手机起名百家姓起取名大全八字算命绝密口诀解释梦境给男朋友起了什么名字好呢周易中好听的名字淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男子给前妻转账 现任妻子起诉要回网友建议重庆地铁不准乘客携带菜筐月嫂回应掌掴婴儿是在赶虫子重庆警方辟谣“男子杀人焚尸”国产伟哥去年销售近13亿新的一天从800个哈欠开始男孩疑遭霸凌 家长讨说法被踢出群高中生被打伤下体休学 邯郸通报男子持台球杆殴打2名女店员被抓19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警两大学生合买彩票中奖一人不认账德国打算提及普京时仅用姓名山西省委原副书记商黎光被逮捕武汉大学樱花即将进入盛花期今日春分张家界的山上“长”满了韩国人?特朗普谈“凯特王妃P图照”王树国3次鞠躬告别西交大师生白宫:哈马斯三号人物被杀代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了房客欠租失踪 房东直发愁倪萍分享减重40斤方法“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火手机成瘾是影响睡眠质量重要因素考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼网友洛杉矶偶遇贾玲呼北高速交通事故已致14人死亡西双版纳热带植物园回应蜉蝣大爆发男孩8年未见母亲被告知被遗忘张立群任西安交通大学校长恒大被罚41.75亿到底怎么缴沈阳一轿车冲入人行道致3死2伤奥运男篮美国塞尔维亚同组周杰伦一审败诉网易国标起草人:淀粉肠是低配版火腿肠外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万杨倩无缘巴黎奥运男子被猫抓伤后确诊“猫抓病”春分“立蛋”成功率更高?记者:伊万改变了国足氛围奥巴马现身唐宁街 黑色着装引猜测

4617作文网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化