时间锁:顾名思义就是用密码随时间变化而变化。
具体实现步骤如下:
步骤一:我们需要明确我们需要一个什么样的类,我想的是需要一个数据类,如下
步骤二:其次我们需要明确这个类里面需要实现那些功能?以简单的为例暂时就需要:获取到系统的时间,输入我们的密码,验证输入的密码与时间是否相等,若相等即为正确密码,反正则为错误密码。如下
解释:Data为我们创建的这个类,这个类里面需要实现的功能getData获取系统当前的时间,UserSet用户输入密码,Lock对用户输入的密码进行判断;
步骤三:分别实现以上功能
1:getData获取系统当前时间的实现:
这里我们需要调用Java为我们提供的一个object类里面的Data类和SimpleDateFormat类,这两个类可以帮助我们获取到系统当前的时间,代码如下:
public void getData(){
java.util.Date date = new java.util.Date();
SimpleDateFormat format = new SimpleDateFormat("HHmm");
timedate = format.format(date);
}
2:UserSet用户输入密码的实现
这个就相对来说简单用Scanner即可实现,把它赋值给一个变量即可,代码如下:
public void UserSet(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的密码:");
passWord = scanner.nextLine();
}
3:Lock对用户输入的密码进行判断的实现
在引入实现功能时,需要提及一个知识点:equals和==的区别,首先我们需要先知道两者在内存里的用法是什么:
首先我们先创建两个变量并初始化,String1 = “小王” String2 = “小明”,两个变量在内存中是以以下形式进行存储的
注意:在内存中存储一个变量主要是把一个变量存储到开辟的一个地址中,调用的时候是调用这个变量的地址值(可能这样说不是很准确,欢迎大神指点一二)
其次,我们需要明确equals和==在什么时候需要使用,==在基本运算里面会使用到,而equals在本质上也是判断两个数是否相等,二者用于判断数字类型时本质都是一样的,但是二者的区别就在于对字符类型的判断:==在对于字符串判断时,判断的是它们之间的地址是否一样,一样就是TRUE,否则FALSE;而equals在对于字符串判断时,判断的是其内容,内容一致即TRUE,否则FALSE!
对于密码判断是否相等,肯定是字符串类型的,故我们选择用equals,代码如下:
public void lock(){
if (timedate.equals(passWord)){
System.out.println("恭喜你密码正确,欢迎使用");
}else{
System.out.println("密码错误哟,请重新输入");
}
}
步骤四:在MyClass中创建程序的入口main,在其中创建Data的对象,利用对象调用其内部的方法,代码如下:
public static void main(String[] args) {
Data data = new Data();
data.getData();
data.UserSet();
data.lock();
}
注:以上只是一个很简单很简单的面向对象,模块化程序,可以在其基础上进行延伸和发展。
完整代码如下:
public class Client {
public static void main(String[] args) {
Data data = new Data();
data.getData();
data.UserSet();
data.lock();
}
}
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Data {
String timedate;
String passWord;
public void getData(){
java.util.Date date = new java.util.Date();
SimpleDateFormat format = new SimpleDateFormat("HHmm");
timedate = format.format(date);
}
public void UserSet(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的密码:");
passWord = scanner.nextLine();
}
public void lock(){
if (timedate.equals(passWord)){
System.out.println("恭喜你密码正确,欢迎使用");
}else{
System.out.println("密码错误哟,请重新输入");
}
}
}