时间锁,手把手教你如何用Java设置随时间变化的动态密码

时间锁:顾名思义就是用密码随时间变化而变化。

具体实现步骤如下:

步骤一:我们需要明确我们需要一个什么样的类,我想的是需要一个数据类,如下

 步骤二:其次我们需要明确这个类里面需要实现那些功能?以简单的为例暂时就需要:获取到系统的时间,输入我们的密码,验证输入的密码与时间是否相等,若相等即为正确密码,反正则为错误密码。如下

 解释: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("密码错误哟,请重新输入");
        }
    }
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1257386020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值