2020年10月10日Java学习日记
含有验证码的登陆界面
package day02; import java.util.Random; import javax.swing.JOptionPane; public class DHK { public static void main(String[] args) { StringBuffer buffer = new StringBuffer( "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ); StringBuffer sb = new StringBuffer(); Random r = new Random(); int range = buffer.length(); for ( int i = 0 ; i < 6 ; i++) { sb.append(buffer.charAt(r.nextInt(range))); } String name = JOptionPane.showInputDialog( "登录名" ); String key = JOptionPane.showInputDialog( "密码" ); JOptionPane.showMessageDialog( null , "验证码为" + sb, "验证" , JOptionPane.INFORMATION_MESSAGE); for (;;) { String yanzheng = JOptionPane.showInputDialog( "验证码" ); StringBuffer sb2 = new StringBuffer(yanzheng); if (sb2.toString().equals(sb.toString())) { JOptionPane.showMessageDialog( null , "验证码成功" , "验证" , JOptionPane.INFORMATION_MESSAGE); break ; } else { JOptionPane.showMessageDialog( null , "验证码错误请重新输入" , "验证" , JOptionPane.INFORMATION_MESSAGE); continue ; } } } } |
此代码没有设计登录名和密码的相关操作,只是简单生成了随机验证码,并做出判断:验证码输入是否正确,未做到将登录名,密码和验证码显示在同一提示框上。
相关知识:
1、StringBuffer 的基础用法
https://blog.csdn.net/qq_36684107/article/details/83743899
2、判断 StringBuffer类型对象是否相同
在此问题中,需要将用户输入的验证码与系统随机生成的验证码进行比较。若二者相等,则打印验证码成功,退出循环;若二者不相等,则打印验证码输入错误,继续循环。由于用户输入的 yanzheng 为 String类型,系统生成的 sb 为StringBuffer类型,若想判断二者是否相等,则需要定义一个 sb2 ,使得其为 yanzheng 的 StringBuffer类型。
定义一个 sb2 ,使得其为 yanzheng 的 StringBuffer类型:
StringBuffer sb2 = new StringBuffer(yanzheng); |
具体判断方法为:
sb2.toString().equals(sb.toString()); |