重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
设置一个全局的整型变量 int i=0;
网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了阎良免费建站欢迎大家使用!
如果密码错误变量就加1
判断变量是否大于等于三 if(i=3)
将帐号锁定
用While和一个计数变量,以下是伪代码
定义计数变量并归零
定义状态变量并归零
while(计数变量3且状态变量为真)
{
输入密码
if(密码正确)
{
状态变量设定为真
}
else
{
计数变量+1
密码框清空
}
}
if(状态变量不为真) /说明前面的循环结束是因为输错了三次
{
提示:请管理员解锁
【密码输入过程与上方用while循环类似】
}
else
{
(剩余操作)
}
while是循环啊,应该用if吧,让用户有三次输入验证的机会string uid="XX";//用户输入的帐号string pwd="XX";//用户输入的密码int num=1;//用户输入验证的次数 if(num=3){ if(如果用户输入的帐号和密码验证通过){ // 进行相关操作 }else{ num++; return;// } }else{ //弹出消息,告知用户因为输入错误超过3次,帐号被锁定 }}
/*
java是面向对象的程序设计语言。我们要做的是用钥匙开锁。首先创建锁类,定义锁的属性,也就是可以给锁赋予密码或者说给它一个锁芯。锁能干嘛,打开和锁起。打开就要用钥匙去匹配锁孔,密码锁就要用你输入的密码去匹配锁的密码,密码正确,锁就打开,错误就打不开。锁的锁起,不需要钥匙就锁起了。
/
public class Lock{
String lock; //定义锁密码
void onlock(){
System.out.println("锁起来了");
}
void unlock(String keys){ //开锁。插入钥匙,看能不能开锁。
if(keys == lock){
System.out.println("锁能打开");
}else{
System.out.println("您的钥匙不匹配");
}
}
}
/
*测试我们的锁。
/
public class Test {
public static void main(String[] args) {
Lock lock = new Lock();
lock.lock="dxnwd333";
lock.onlock();
lock.unlock("abc");
lock.unlock("dxnwd333");
}
}
对象是一个锁标志。按照先到先得的原则,如果有多个线程都会执行代码,并使用同一个对象作为锁,
synchronize(对象){ .... }
那么,先执行这段代码的那个线程,将会获得这个对象锁,而当这个线程执行这段代码的时候,其他线程也是使用这个对象作为锁的,就不能执行这段代码,知道最初得到这个锁的线程运行完这段代码,然后再把锁分配给下一个线程执行。
public Object getObject(String key,Object o) {
synchronized (map) {
if(map.get(key)==null) {
map.put(key,o)
}else {
return map.get(key);
}}// 格式没法弄,自己弄一下
}
// demol0326 的回答意思使用MyTest的实例来加锁,但是map是static的,无法锁住
// MyTest的多个实例在多个线程中的请求
//禾木双子 :如果A线程在getObject方法的第二行停止,此时B线程进入getObject后执行部分代码, 此时B线程停止,A线程启动,他不会执行'多线程处理', 仍然有线程线程安全问题,(想像一下更多的线程进入该方法的情况,num甚至会得到负值)