手机号格式检查系统(Java)

news2025/2/4 16:02:57

本系统支持的手机号检查如下所示:
/**
* 中国移动,中国联通,中国电信都为11位的手机号
* 中国"移动"前三位:
* 135、136、137、138、139、147、150、151、152、157、
* 158、159、172、178、182、183、184、187、188、195、197、198
*
* 中国"联通"前三位:
* 130、131、132、145、155、156、166、175、176、185、186、196
*
* 中国"电信"前三位:
* 133、149、153 、180 、181 、189、173、177、190、191、193、199
*
* 座机号为1-7或8位
*
*公共服务电话通常为3-5位如下所示:
* 110报警电话,120医疗急救电话,119消防火警电话,122交通事故电话
* 12315消费者投诉电话
* 10011 中国联通话费查询电话
* 10086 中国移动话费查询电话
* */

 

手机号类 

//手机号
public class Phone {
    //手机号
    private String phone;
    //手机号格式
    private String format;

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getFormat() {
        return format;
    }

    public void setFormat(String format) {
        this.format = format;
    }
}

实现手机号格式检测的类

import java.util.ArrayList;

//检测手机号格式
public class testFormat {
    //实现检测手机号格式的方法
    public void formatWay(ArrayList<Phone> phone) {
        //中国联通,电信,移动的判断
        for (int i = 0; i < phone.size(); i++) {
            Phone p = phone.get(i);
            String str = p.getPhone();
            if (str.length() == 11) {
                if (str.startsWith("130") || str.startsWith("131") || str.startsWith("132") || str.startsWith("145") ||
                        str.startsWith("155") || str.startsWith("156") || str.startsWith("166") || str.startsWith("175") ||
                        str.startsWith("176") || str.startsWith("185") || str.startsWith("186") || str.startsWith("196")) {
                    //将数据存入手机号集合中
                    p.setFormat("中国联通");
                } else if (str.startsWith("133") || str.startsWith("149") || str.startsWith("153") || str.startsWith("180") ||
                        str.startsWith("181") || str.startsWith("189") || str.startsWith("173") || str.startsWith("177") ||
                        str.startsWith("190") || str.startsWith("191") || str.startsWith("193") || str.startsWith("199")) {
                    //将数据存入集合中
                    p.setFormat("中国电信");
                } else if (str.startsWith("135") || str.startsWith("136") || str.startsWith("137") || str.startsWith("138") ||
                        str.startsWith("139") || str.startsWith("147") || str.startsWith("150") || str.startsWith("151") ||
                        str.startsWith("152") || str.startsWith("157") || str.startsWith("158") || str.startsWith("159") ||
                        str.startsWith("172") || str.startsWith("178") || str.startsWith("182") || str.startsWith("183") ||
                        str.startsWith("184") || str.startsWith("187") || str.startsWith("188") || str.startsWith("195") ||
                        str.startsWith("197") || str.startsWith("198")) {
                    //将数据存入集合中
                    p.setFormat("中国移动");
                } else {
                    p.setFormat("错误的11位手机号或不是本系统支持查询的手机号格式");
                }
            }
            //座机号
            else if (str.length() == 7 || str.length() == 8) {
                p.setFormat("座机号");
            }
            //紧急电话
            else if (str.length() == 3) {
                if (str.equals("110")) {
                    p.setFormat("报警电话");
                } else if (str.equals("120")) {
                    p.setFormat("医疗急救电话");
                } else if (str.equals("122")) {
                    p.setFormat("交通事故电话");
                } else if (str.equals("119")) {
                    p.setFormat("消防火警电话");
                }else{
                    p.setFormat("错误的3位手机号或不是本系统支持查询的手机号格式");
                }
            }
            else if (str.length() == 5) {
                if (str.equals("12315")) {
                    p.setFormat("消费者投诉电话");
                } else if (str.equals("10011")) {
                    p.setFormat("中国联通话费查询电话");
                } else if (str.equals("10086")) {
                    p.setFormat("中国移动话费查询电话");
                }else{
                    p.setFormat("错误的5位手机号或不是本系统支持查询的手机号格式");
                }
            }
            else {
                p.setFormat("错误的手机号或不是本系统支持查询的手机号格式");
            }
        }
    }
}

主界面实现

import java.util.ArrayList;
import java.util.Scanner;

//手机号格式检验系统
public class textMain {
    public static void main(String[] args) {
        //创建扫描器,接收用户输入
        Scanner sc = new Scanner(System.in);

        //定义集合存储手机号
        ArrayList<Phone> phone = new ArrayList<>();

        //定义一个接收用户输入选择的变量
        int choice = 0;

        //构建该系统进入的主页面
        System.out.println("----------欢迎进入手机号码格式查询系统----------");
        while(true) {
            System.out.println("1.输入手机号");
            System.out.println("2.查看所有手机号格式");
            System.out.println("3.退出该系统");
            System.out.println("请输入上方的序号(按enter键确认)->");
            //判断输入的指令是否有误
            while(true) {
                choice = sc.nextInt();
                if(choice != 1 && choice != 2 && choice != 3){
                    System.out.println("对不起,指令输入有误,请重新输入:");
                }else{
                    break;
                }
            }
            //执行输入的指令执行相应的功能
            switch(choice) {
                case 1:
                    System.out.println("----------欢迎进入输入手机号功能----------");
                    System.out.println("请输入你的手机号(按enter键确认)->");
                    //将输入的手机号存入手机号集合中
                    Phone p = new Phone();
                    p.setPhone(sc.next());
                    phone.add(p);
                    break;
                case 2:
                    System.out.println("----------欢迎进入查看所有手机号格式功能----------");
                    if(phone.size() == 0){
                        System.out.println("无手机号可查,请添加手机号后再查!\n");
                        break;
                    }else {
                        //将手机号放入检查格式的方法中检查
                        new testFormat().formatWay(phone);
                        System.out.println("手机号\t\t\t\t\t手机号格式");
                        for(int i = 0;i < phone.size(); i++){
                            Phone pp = phone.get(i);
                            System.out.println(pp.getPhone()+"\t\t\t\t\t"+pp.getFormat());
                        }
                        System.out.println();
                        break;
                    }
                case 3:
                    System.out.println("系统正在退出中......");
                    System.out.println("\n系统已退出,欢迎下次光临!");
                    System.exit(0);
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

铝网初效过滤器及金属网过滤器的区别

广州特耐苏净化设备有限公司详细介绍&#xff1a;粗效过滤器主要技术参数 什么叫铝网初效过滤器及金属网过滤器?铝网初效过滤器也叫金属网过滤器也可叫GH金属孔网过滤器只是人们的叫法不同。 铝网初效过滤器均具安全&#xff0c;坚固&#xff0c;耐高温,耐酸碱,之特性.一般应…

WebDAV之葫芦儿•派盘+Obsidian笔记

Obsidian 支持WebDAV方式连接葫芦儿派盘。 还在为大量的日记、笔记管理而烦恼?推荐一款可以作为第二大脑、支持双向链接、基于Markdown文件的本地知识管理软件。 Obsidian是一款全设备端的笔记软件,让用户能够非常方便的进行笔记上面的记录,纸张无限边界,想到哪,写到哪,不…

点成分享 | 蛋白质浓度测定之BCA法

蛋白质浓度的测定是常见的生物实验之一。本文介绍的是使用BCA法&#xff08;二辛可酸法或二喹啉甲酸法&#xff09;进行蛋白质浓度的测定。 BCA分子式 1 实验原理 BCA是一种稳定的碱性水溶性复合物。在碱性条件下&#xff0c;蛋白质可以将BCA试剂中的二价铜离子Cu2还原成一价…

C++类和对象(上)

学习“类”不“类”&#xff0c;有“对象”了吗&#xff1f; 目录 面向过程和面向对象 类的引入 类的定义 访问限定符 封装 类的作用域 类的实例化 类对象的存储方式 计算类对象的大小 this指针 this指针的特性 this指针两问 面向过程和面向对象 ●C语言是面向过程的…

【Javassist】快速入门系列03 使用Javassist实现方法异常处理

系列文章目录 01 在方法体的开头或结尾插入代码 02 使用Javassist实现方法执行时间统计 03 使用Javassist实现方法异常处理 文章目录系列文章目录前言引入Javassist jar包使用Javassist实现方法异常处理总结说明前言 上一章我们介绍了使用使用Javassist实现了对方法执行时间的…

07_哈希表

哈希表 1.为什么需要构建哈希表 现在有一组数据&#xff0c;我们想查找一个值&#xff08;x&#xff09;是否在这组数据中&#xff0c;通常来说&#xff0c;我们需要把这组数据遍历一遍&#xff0c;来看看有没有x这个值。 这时&#xff0c;我们发现这样查找数据要花费的时间…

C++ 类和对象

C认为万事万物都皆为对象&#xff0c;对象上有其属性和行为&#xff0c;C面向对象的三大特性为&#xff1a;封装、继承、多态。 一. 封装 封装是C面向对象三大特性之一。 封装的意义&#xff1a; 将属性和行为作为一个整体&#xff0c;表现生活中的事物将属性和行为加以权限控…

【数据库】时间戳并发控制

Timestamp ordering(T/O) 根据事务的时间戳来决定顺序。 如果T1 的时间戳小于T2 的时间戳&#xff0c;那么执行的结果要等价于T1 执行早于T2 的执行。 时间戳的实现策略&#xff1a; 系统时钟 逻辑计数 混合方法 Basic Timestamp Ordering&#xff08;T/O&#xff09;Prtot…

【WPF绑定2】 ComboBox MVVM SelectedValue复杂数据类型绑定

前言 这次绑定是一次非常痛苦的经历&#xff0c;因为SelectedValue总是不能生效&#xff01;我一度怀疑是wpf的Bug。其实还是自己没搞清楚。 在之前的一篇文章中&#xff1a; http://t.csdn.cn/A4W6Ahttp://t.csdn.cn/A4W6A我也写个ComboBox的绑定&#xff0c;但是当时没有指…

【实时数仓】DWM层订单宽表之实现基本的维度查询、加入旁路缓存模式

文章目录一 DWM层-订单宽表1 维表关联代码实现&#xff08;1&#xff09;首先实现基本的维度查询功能a 封装Phoenix查询的工具类PhoenixUtilb 封装查询维度的工具类DimUtil&#xff08;2&#xff09; 优化1&#xff1a;加入旁路缓存模式a 缓存策略的几个注意点b 缓存的选型c 在…

AnimateGAN 迁移部署

文章目录1. 模型概述2. 迁移过程2.1 将ckpt的权重文件转换为pb的权重文件。2.2 将pb的权重文件迁移为 BM1684 bmodel模型2.3 迁移后pipeline搭建2.4 使用streamlit部署3. 效果展示AnimateGAN 是一个基于 GAN 的动漫生成模型&#xff0c;可以将真实的场景照片转换成动漫形式。本…

CASA(Carnegie-Ames-Stanford Approach)模型

植被作为陆地生态系统的重要组成部分对于生态环境功能的维持具有关键作用。植被净初级生产力&#xff08;Net Primary Productivity, NPP&#xff09;是指单位面积上绿色植被在单位时间内由光合作用生产的有机质总量扣除自养呼吸的剩余部分。植被NPP是表征陆地生态系统功能及可…

设计模式之美总结(创建型篇)

title: 设计模式之美总结&#xff08;创建型篇&#xff09; date: 2022-11-03 13:58:36 tags: 设计模式 categories:技术书籍及课程 cover: https://cover.png feature: false 文章目录1. 单例模式&#xff08;Singleton Design Pattern&#xff09;1.1 为什么要使用单例&…

如何在高密度的IB学习中杀出重围?

建议选择IB所需具备的能力/特点 ▣ 敢于挑战自我&#xff0c;愿意通过努力换取个人能力的飞跃 ▣ 如果擅长或喜欢写作&#xff08;中英文&#xff09;&#xff0c;IB对于你来说可能不会那么难。 ▣ 有自主学习、自主研究的能力。有些老师可能教的并不太让人满意&#xff0c;因此…

OpenTelemetry系列 (三)| 神秘的采集器 - Opentelemetry Collector

前言 上个篇章中我们主要介绍了OpenTelemetry的客户端的一些数据生成方式&#xff0c;但是客户端的数据最终还是要发送到服务端来进行统一的采集整合&#xff0c;这样才能看到完整的调用链&#xff0c;metrics等信息。因此在这个篇章中会主要介绍服务端的采集能力。 客户端数…

学Python能做哪些副业?我一般不告诉别人

前两天一个朋友找到我吐槽&#xff0c;说工资一发交完房租水电&#xff0c;啥也不剩&#xff0c;搞不懂朋友圈里那些天天吃喝玩乐的同龄人钱都是哪来的&#xff1f; 确实如此&#xff0c;刚毕业的大学生工资起薪都很低&#xff0c;在高消费、高租金的城市&#xff0c;别说存钱…

日志篇- ES+Logstash+Filebeat+Kibana+Kafka+zk 安装配置与使用详解

1- 学习目标 ELK基本概念&#xff0c;特点安装部署 Kibana ES集群 Logstash Filebeat Kafka集群性能瓶颈以及优化QA汇总 2- 介绍 2.1- 基本概念 Elasticsearch 分布式搜索和分析引擎&#xff0c;具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建&#xff0c…

xv6---Lab4 traps

参考&#xff1a; Lab: Traps 关于寄存器s0和堆栈https://pdos.csail.mit.edu/6.828/2020/lec/l-riscv-slides.pdf RISC-V assembly Q: 哪些寄存器包含函数的参数?例如&#xff0c;哪个寄存器在main对printf的调用中保存了传参13 ? A: a2保存13(通过gdb调试可看出寄存器a2的…

【设备管理系统】如何助力制造企业实现精益生产?

随着企业对于机械设备的依赖性越来越高&#xff0c;生产设备日益大型化、自动化&#xff0c;流程线生产流程问题逐渐浮于表面&#xff0c;现阶段设备管理的各项制度已经不能够满足日常的生产工作。企业逐渐都面临着设备管理的复杂问题&#xff0c;尤其是设备的保养、维修、日常…

JMeter—HTTP压测

目录&#xff1a;导读 一、创建线程组 二、添加HTTP 三、查看结果树 四、响应断言 五、聚合报告 六、自定义变量 七、CSV可变参数压测 结语 一、创建线程组 右击-->添加-->Threads(Users)-->线程组 下面对比较重要的几个参数&#xff0c;讲解下&#xff1a; …