要求:让用户同时输入账户,密码,验证码,只有三个都满足的时候,输出登录成功,否则若账户密码正确,验证码错误,输出验证码错误,若账户密码错误则输出账户密码出错.
为了完成上面的要求,首先我们要获取到用户输入的账户,密码,验证码的数据,则需要用到键盘输入的方法,如下:
import java.util.Scanner; //导入Scanner包
public UserPasswoed{
public static void main(String[] args){
Scanner a=new Scanner(System.in); //创建新的Scanner对象a
String user=a.next(); //将输入的用户的账户存储进变量user中
String password=a.next(); //将输入的用户的密码存储进变量password中
String verify=a.next(); //将用户输入的的验证码存储进verify变量中
}
}
这样,就获取到了用户输入的我们所需要的值,但是我们知道验证码是每次都会发生变化的,而不是固定不变写死的,那么为了让我们的验证码随机产生,则我们需要去导入Random包来;
import java.util.Random;
接下来需要思考,假如我们需要一个6位数的验证码.如果验证码都是数字就只需要确保Random.nextInt()的取值范围为;100000-999999;则可以写为Random.nextInt(900000)+100000,但是我们知道验证码不可能只有数字,还会有大小写字母,这个时候,就不能用这个了,那么我们的java里也没有一个Random.nextChar或者Random.nextString的方法,那么就需要去吧这个6位数的验证码拆分开,一位一位的随机,然后拼接起来,则:
Random b=new Random(); //创建一个新的Random对象
int middle;
String string="";
for(int i=0;i<6;i++){
int midIf=b.nextInt(3); /*随机生成0,1,2三个数,如果随机到0则让验证码这一位置为数字,随机到1则让验证码这一位为大写字母,随机到2则让一位为小写字母*/
if(midIf==0){
middle=b.nextInt(10); //随机生成一个0-9的数字给middle中
string+=middle;
}
else if(midIf==1){
middle=b.nextInt(26)+65; //因为没有char,所以可以利用ASCII码来 *** 作,之后再把值强制转换为char就可以了.此处为大写字母A为65
string+=(char)middle;
}
else{
middle=b.nextInt(26)+97; //此处为小写a,为97
string+=(char)middle;
}
}
System.out.println("验证码:"+string); //输出验证码
那么这样随机的6位数验证码就生成好了,现在只需要进行判断就好了,整体的具体代码如下:
import java.util.Scanner;
import java.util.Random;
public UserPasswoed{
public static void main(String[] args){
int middle,aa=0; //变量aa用来存储输错的次数
Scanner a=new Scanner(System.in);
Random b=new Random();
while(true){
System.out.println("请输入用户名:");
String user=a.next();
System.out.println("请输入密码:");
String password=a.next();
System.out.println("请输入和下面相同的验证码");
String string="";
for(int i=0;i<6;i++){
int midIf=b.nextInt(3); /*随机生成0,1,2三个数,如果随机到0则让验证码这一位置为数字,随机到1则让验证码这一位为大写字母,随机到2则让这一位为小写字母*/
if(midIf==0){
middle=b.nextInt(10); //随机生成一个0-9的数字给middle中
string+=middle;
}
else if(midIf==1){
middle=b.nextInt(26)+65; //因为没有char,所以可以利用ASCII码来 *** 作,之后再把值强制转换为char就可以了.大写字母A为65
string+=(char)middle;
}
else{
middle=b.nextInt(26)+97; //此处为小写a,为97
string+=(char)middle;
}
}
System.out.println(string);
String verify=a.next();
if(user.equals("admin") && password.equals("mypassword")){
if(verify.equals(string)){
System.out.println("登录成功");
break;
}
else{
System.out.println("验证码错误");
}
}
else{
aa+=1;
if(aa==3){
System.out.println("连续输错三次,账户已冻结");
break;
}
else{
System.out.println("账户密码输入错误,请重新输入");
}
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)