Java信息验证

某仓库管理系统的登录界面中需要输入用户名和密码,其中用户名只能由 6~10 位数字组成,密码只能有 6 位,任何不符合用户名或者密码要求的情况都视为异常,并且需要捕获并处理该异常。

下面使用自定义异常类来完成对用户登录信息的验证功能,实现步骤如下。

1 . 编写自定义异常类 LoginException,该类继承自 Exception。在 LoginException 类中包含两个构造方法,分别为无参的构造方法和含有一个参数的构造方法,代码如下:

public class LoginException extends Exception {public LoginException() {super();}public LoginException(String msg) {super(msg);}
}

2 . 创建测试类 Test,在该类中定义 validateLogin() 方法,用于对用户名和密码进行验证。当用户名或者密码不符合要求时,使用自定义异常类 LoginException 输出相应的异常信息。validateLogin() 方法的定义如下:

public boolean validateLogin(String username,String pwd) {boolean con = false;    // 用户名和密码是否正确boolean conUname = false;    // 用户名格式是否正确try {if (username.length() >= 6 && username.length() <= 10) {for (int i = 0;i < username.length();i++) {char ch = username.charAt(i);    // 获取每一个字符if (ch >= '0' && ch <= '9') {    // 判断字符是否为0~9的数字conUname = true;    // 设置 conUname 变量值为 true} else {    // 如果字符不是0~9的数字,则拋出LoginException异常conUname = false;throw new LoginException("用户名中包含有非数字的字符!");}}} else {    // 如果用户名长度不在6~10位之间,拋出异常throw new LoginException("用户名长度必须在6〜10位之间!");}if (conUname) {    // 如果用户名格式正确,判断密码长度if (pwd.length() == 6) {    // 如果密码长度等于6con=true;    // 设置con变量的值为true,表示登录信息符合要求} else {    // 如果密码长度不等于6,拋出异常con = false;throw new LoginException("密码长度必须为 6 位!");}}} catch(LoginException e) {    // 捕获 LoginException 异常System.out.println(e.getMessage());}return con;
}

3 . 在 Test 类中添加 main() 方法,调用 validateLogin() 方法,如果该方法返回 true,则输出登录成功的信息。main() 方法的定义如下:

public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("用户名:");String username = input.next();System.out.println("密码:");String password = input.next();Test08 lt = new Test08 ();boolean con = lt.validateLogin(username,password);    // 调用 validateLogin() 方法if (con) {System.out.println("登录成功!");}
}

上例的 validateLogin() 方法中使用条件控制语句和 for 循环语句分别对用户名和密码进行了验证。任何不符合用户名或者密码要求的情况都拋出自定义异常 LoginException,并在 catch 语句中捕获该异常,输出异常信息。

运行程序,当用户输入的用户名含有非数字字符时将拋出 LoginException 异常,执行 catch 语句块中的代码打印异常信息,如下所示。

用户名:
xsdke8!
密码:
123456
用户名中包含有非数字的字符!

当用户输入的用户名长度不在 6~10 位时同样会拋出 LoginException 异常并打印异常信息,如下所示。

用户名:
adminissdftrator
密码:
123456
用户名长度必须在6~10位之间!

当用户输入的登录密码不等于 6 位时也会拋出 LogWException 异常,并打印出异常信息,如下所示。

用户名:
23181024
密码:
12345
密码长度必须为 6 位!

当用户输入的用户名和密码都符合要求时,则打印登录成功的信息,如下所示。

用户名:
20181024
密码:
123456
登录成功!

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

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

相关文章

沉降观测曲线图 沉降观测汇总_这些沉降观测要求,工程人必须掌握!

1沉降观测的基本要求 1)仪器设备、人员素质的要求根据沉降观测精度要求高的特点&#xff0c;为能精确地反映出建(构)筑物在不断加荷下的沉降情况&#xff0c;一般规定测量的误差应小于变形值的1/10—1/20&#xff0c;为此要求沉降观测应使用精密水准仪(S1或S05级)&#xff0c;水…

rgb红色范围_【论文阅读18】RGB-D Object-Oriented Semantic Mapping

主要内容基于RGB-D数据的语义建图&#xff08;SLAM帮助语义&#xff09;。具体过程如下首先利用SSD执行单帧RGB图片&#xff08;2D&#xff09;物体检测。接着基于检测结果和深度信息&#xff0c;利用3D分割算法进一步分割3D点云。最终利用ORB-SLAM2的相机位姿信息将每帧的3D点…

Java的异常跟踪栈

异常对象的 printStackTrace() 方法用于打印异常的跟踪栈信息&#xff0c;根据 printStackTrace() 方法的输出结果&#xff0c;开发者可以找到异常的源头&#xff0c;并跟踪到异常一路触发的过程。 看下面用于测试 printStackTrace 的例子程序。 class SelfException extends…

7价 半导体掺杂_掺杂工艺(一)

概述半导体材料的独特性质之一是它们的导电性和导电类型(N型或P型)能被产生和控制。在本章中&#xff0c;描述在晶圆内和表面上特别的小块导电区和PN结的形成。介绍扩散和离子注入两种掺杂技术的原理和工艺。简介使晶体管和二极管工作的结构就是PN结。结(junction)就是富含电子…

数据增强_imgaug图像数据增强必备工具

导读我们经常会遇到训练模型时数据不够的情况&#xff0c;而且很多时候无法再收集到更多的数据&#xff0c;只能通过做一些数据增强或者其它的方法来合成一些数据。常用的数据增强方式有裁剪、旋转、缩放、亮度对比度色度饱和度变换、仿射变换、透视变换等&#xff0c;这篇文章…

Java类的封装

封装将类的某些信息隐藏在类内部&#xff0c;不允许外部程序直接访问&#xff0c;只能通过该类提供的方法来实现对隐藏信息的操作和访问。 封装的特点&#xff1a; 只能通过规定的方法访问数据。隐藏类的实例细节&#xff0c;方便修改和实现。实现封装的具体步骤如下&#xff…

python 公众号菜单_Python脚本--微信公众号自定义菜单的创建及获取

#-*- coding: utf-8 -* importtkMessageBoximporturllib2importjsonimportsys reload(sys) sys.setdefaultencoding(UTF-8) appID wxa46e26b3d591f9f2 //测试号信息 appsecret 83ee70dbb6dbc1e090971554b1c7981b //同上 menu { //菜单信息&#xff0c;包括一级菜单和二级菜单&q…

深度学习多模态融合_3D目标检测多模态融合综述

0前言本篇文章主要想对目前处于探索阶段的3D目标检测中多模态融合的方法做一个简单的综述&#xff0c;主要内容为对目前几篇几篇研究工作的总结和对这个研究方面的一些思考。在前面的一些文章中&#xff0c;笔者已经介绍到了多模态融合的含义是将多种传感器数据融合。在3D目标检…

Java封装图书信息类

封装示例编写表示图书的 Book 类&#xff0c;实现以下需求&#xff1a; 基本信息包括图书名称&#xff08;bookName&#xff09;、总页数&#xff08;pagelbtalNum&#xff09;&#xff0c;其中页数不能少于 200 页&#xff0c;否则输出错误信息&#xff0c;并赋予默认值 200。…

python tkinter数据库通讯录_TKINTER--GUI连接数据库登陆

#-*- coding:UTF-8 -*- import tkinter.messagebox import tkinter as tk import pymysql # 构造窗口 window tk.Tk() window.title(登陆窗口) window.geometry(450x300) # 构造画布 canvas tk.Canvas(window,height200,width500) image_file tk.PhotoImage(filewelcome.gif…

自适应宽_移动端实现自适应缩放界面的方法汇总

作者 | 唐宋元明清2188来源 | http://www.cnblogs.com/kybs0/在开发App端的网页时&#xff0c;要适配iphone、ipad、ipod、安卓等各种机型&#xff0c;一般是直接使用em、px转em、界面缩放。本章是通过将界面缩放&#xff0c;等比例显示在各机型上。过程中遇到了些问题和大坑~然…

Java继承简介

继承是面向对象的三大特征之一。继承和现实生活中的“继承”的相似之处是保留一些父辈的特性&#xff0c;从而减少代码冗余&#xff0c;提高程序运行效率。 Java 中的继承就是在已经存在类的基础上进行扩展&#xff0c;从而产生新的类。已经存在的类称为父类、基类或超类&…

各种说明方法的答题格式_初中语文阅读答题公式 语文阅读理解万能公式大全...

很多人想知道初中语文阅读理解有哪些答题公式&#xff0c;语文阅读理解的万能公式有哪些呢?下面小编为大家介绍一下!初中语文阅读理解答题公式大全(一)某句话在文中的作用&#xff1a;1、文首&#xff1a;开篇点题;渲染气氛(散文)&#xff0c;埋下伏笔(记叙类文章)&#xff0c…

esp8266手机端网络调试助手_esp8266定时控制

要实现定时控制&#xff0c;需要先实现手动控制&#xff0c;或者app控制。实测定时精度&#xff0c;北京时间&#xff0c;误差不超过1秒。第一、远程App控制或手动控制下载esp8266示例程序下载地址: 点击下载本demo 是利用arduino IDE开发&#xff0c;关于arduino IDE 的ESP826…

集成学习之Adaboost(提升方法)

Adaboost 提升方法就是从弱学习器出发&#xff0c;反复学习&#xff0c;得到一系列弱分类器&#xff08;基本分类器&#xff09;&#xff0c;然后组合这些弱分类器&#xff0c;构成一个强分类器。 基本思路 待解决问题 1、每一轮如何改变训练数据的权值或概率分布 2、如何将…

Java super关键字详解

由于子类不能继承父类的构造方法&#xff0c;因此&#xff0c;如果要调用父类的构造方法&#xff0c;可以使用 super 关键字。super 可以用来访问父类的构造方法、普通方法和属性。 super 关键字的功能&#xff1a; 在子类的构造方法中显式的调用父类构造方法访问父类的成员方…

93没有了_杭州1米93程序员征婚贴火了!年薪50万,孩子随妈姓,没有皇位要继承...

文丨三秋桂子自从二胎政策开放以来&#xff0c;很多宝妈都希望二宝能随自己姓&#xff0c;但有些男方家庭却不同意&#xff0c;双方就孩子的“冠名权”一事争论不休。可最近有位小伙却因为征婚贴火了&#xff0c;原因有两个&#xff0c;一是小伙瞩目的身高&#xff0c;二是小伙…

李航《统计学习方法》之HMM隐马尔可夫模型

李航《统计学习方法》之HMM隐马尔可夫模型 文章目录前言一、基本概念1、语言描述&#xff1a;2、符号表示3、基本假设4、例子5、隐马尔可夫模型解决的三个基本问题二、概率计算算法1、向前算法算法&#xff1a;例题2、向后算法三、学习算法1、监督学习算法背景方法2、无监督学习…

Java对象类型转换

将一个类型强制转换成另一个类型的过程被称为类型转换。本节所说的对象类型转换&#xff0c;是指存在继承关系的对象&#xff0c;不是任意类型的对象。当对不存在继承关系的对象进行强制类型转换时&#xff0c;会抛出 Java 强制类型转换&#xff08;java.lang.ClassCastExcepti…