思路:
首先是键盘的输入,然后是字符的匹配加上基本的逻辑判断。
代码实现:
首先是接口规范:
public interface IUserMessage { // 规范设置用户信息的类
public boolean setMessage();
}
public interface IMnu { // 规范菜单接口
public void reInput();
}
然后是用户类:
public class UserMessage {
private String UserName;
private String UserPassword;
public UserMessage() {
}
public UserMessage(String userName, String userPassword) {
UserName = userName;
UserPassword = userPassword;
}
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
public String getUserPassword() {
return UserPassword;
}
public void setUserPassword(String userPassword) {
UserPassword = userPassword;
}
@Override
public String toString() {
return "| UserName='" + UserName + "' |\t" +
"| UserPassword='" + UserPassword + "' |";
}
public boolean setMessage() {
return false;
}
}
然后是输入用户信息类:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class SetUserMessage extends UserMessage implements IUserMessage {
private BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); // 键盘输入
public boolean setMessage(){ // 输入用户名
try {
System.out.print("请输入用户名:");
String userName = this.buf.readLine();
System.out.print("请输入密码:");
String userPassword = this.buf.readLine();
if (!"".equals(userName) && !"".equals(userPassword)) { // 如果用户名和密码不为空则设置用户名和密码
super.setUserName(userName);
super.setUserPassword(userPassword);
return true;
}
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
}
然后是进行用户名和密码匹配的处理类:
public class CheckUserMessage implements IUserMessage {
private UserMessage userMessage = new SetUserMessage(); // 上转型,这样既可以调用userMessage类的get获取用户名和密码,又可以使用SetUserMessage类的方法
private boolean checkMessage() { // 检查用户名或密码是否匹配
if ("cdulm".equals(this.userMessage.getUserName()) && "123456".equals((this.userMessage.getUserPassword()))) { // 用户名和密码匹配
System.out.println("用户名和密码正确!");
return true;
} else { // 简略输出不匹配项
System.out.println("用户名或密码错误!!");
return false;
}
}
/*
* 下面是将每种情况列出
* */
// if ("cdulm".equals(this.userMessage.getUserName()) && !"123456".equals((this.userMessage.getUserPassword()))) { // 密码匹配
// System.out.println("用户名正确!密码错误!");
// return false;
// }
// if (!"cdulm".equals(this.userMessage.getUserName()) && "123456".equals((this.userMessage.getUserPassword()))){
// System.out.println("密码正确!用户名错误!");
// return false;
// }
// if (!"cdulm".equals(this.userMessage.getUserName()) && !"123456".equals((this.userMessage.getUserPassword()))){
// System.out.println("用户名或密码都错了!!");
// return false;
// }
// return false;
// }
//
@Override
public boolean setMessage() {
if (this.userMessage.setMessage()) { // 如果输入完成
return this.checkMessage(); // 开始检查
} else { // 输入的信息为空
System.out.println("\n用户名和密码为空!!请输入信息!");
}
return false;
}
}
然后是循环输入类:
public class Menu implements IMnu{
public void reInput() {
boolean flag = false;
int inputCount = 0;
while (!flag) {
flag = new CheckUserMessage().setMessage(); // 返回
if (flag) {
break;
}else if (inputCount >= 2){ // 输入三次后
System.out.println("\n已经输错了三次!账户锁定!");
break;
} else { // 当用户名或密码输入错误
System.out.println("\n请重新输入用户名和密码:");
inputCount ++;
}
}
}
}
最后是工厂类和main:
public class Factory {
public static IMnu getIntance(){
return new Menu();
}
}
public class MAIn {
public static void main(String[] args){
Factory.getIntance().reInput();
System.out.println("-------------------------------------");
}
}
输出结果:
以上就是用户登录信息输入的简单案例;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)