需求
已知用户名和密码,请用程序模拟用户登录,总共有三次机会,登录之后,给出相对应的提示
思路
1.已知用户名和密码,定义两个字符串即可
2.键盘录入登录数数据
3.用录入的数据和原来的数据相比对 equals()方法实现
4.用循环实现多次机会,采用for循环,在登录成功后,实验break结束循环
首先,看黑马老师的代码
package 课后作业;
import java.util.Scanner;
public class 用户登录黑马 {
/*
需求
已知用户名和密码,请用程序模拟用户登录,总共有三次机会,登录之后,给出相对应的提示
思路
1.已知用户名和密码,定义两个字符串即可
2.键盘录入登录数数据
3.用录入的数据和原来的数据相比对 equals()方法实现
4.用循环实现多次机会,采用for循环,在登录成功后,实验break结束循环
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
String username="itheima";
String password="czbk";
//4.用循环实现多次机会,采用for循环,在登录成功后,实验break结束循环
for (int i = 0; i < 3 ; i++) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入账号:");
String name =sc.nextLine();
System.out.println("请输入密码:");
String pwd=sc.nextLine();
sc.close();
if(name.equals(username)&&pwd.equals(password)) {
System.out.println("密码验证成功");
break;
}else {
//
System.out.println("密码验证失败,您还有"+(2-i)+"次机会");
}
}
}
}
以下的代码,是我自己写的,可以作为参考,比黑马老师的代码复杂一丢丢.
其实我就是按照,面对对象的思想来写的,实例化对象来获取类中的方法,或者获取值,这样就能把main方法中的代码简单化,甚至只需要调用就好了,出了问题直接去看各个“模块”,问题一目了然,在写代码的路上也遇到了很多很多问题,例如NoSuchElementException报错等等等,但是好在都解决了,不过思来想去,我渐渐明白了也个道理,就是感觉一直跟着课走其实很傻,有的时候,在一些案例题上,你会产生自己的想法,但是,课上的老师,肯定不会教给你难的方法,他只是想让你明白他说的这种方式,有的时候你就也跟着老师走了,但是这样的话,这个问题,你的想法,是不会再来第二次的,课是上不完的,思想虽然也在与时俱进,但是会不会总是显得不这么完整!,学java来的这几天,我总是以为自己差不多都看会了,但其实,当你自己去实操一个小小的小项目的时候,弊端就一个一个都出来了,就像这个破案例,我都做了一天半,不过好在是成功了,太笨了,还需要好好努力,加油,勉励!
获取账号和密码类
package 登录;
import java.util.Scanner;
public class 获取账户密码 {
public int getAccount() {
// TODO 自动生成的方法存根
System.out.println("请输入账号");
Scanner sc=new Scanner(System.in);
int pp=sc.nextInt();
return pp;
}
public String getPassword() {
// TODO 自动生成的方法存根
System.out.println("请输入密码");
Scanner sc=new Scanner(System.in);
String pp=sc.next();
return pp;
}
}
比较类
package 登录;
public class 比较 {
public static int judgement(int account,String password,int a,String p) {
获取账户密码 aaa = new 获取账户密码();
a =aaa.getAccount();
获取账户密码 ppp = new 获取账户密码();
p =ppp.getPassword();
System.out.println(a+"这还a");
System.out.println(p+"这是p");
System.out.println(account+"这是account");
System.out.println(password+"这是password");
if( a==account && p.equals(password) ) { //||是或者的意思
return 0; //&&是和的意思
}else {
return 1;
}
}
}
测试类
package 登录;
public class 测试 {
public static void main(String[] args) {
for (int i = 0; i < 3; i++) {
int a=0; //进行初始化
String p="null"; //进行初始化
int result =比较.judgement(123456,"123456", a, p);
if(result>0) {
System.out.println("密码验证失败请重新输入账号和密码,您还有"+(2-i)+"次机会");
}else {
System.out.println("密码验证成功");
break;
}
}
}
}