完成用户登录功能:
需求:
系统的正确的用户名和密码:changchunhua/123456,请在控制台开发一个登录界面,接收用户输入的登录名和密码,判断用户是否登录成功,登录成功后展示:“欢迎进入系统!”,即可停止程序(注意:最多给用户三次登录机会)
package cn.ensource.string;
import java.util.Scanner;
public class StringCase1 {
public static void main(String[] args) {
//开发登录界面
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("请您输入登录名: ");
String loginName = sc.next();
System.out.println("请您输入登录密码: ");
String password = sc.next();
// 设计一个登录方法
// 调用登录方法
boolean rs = login(loginName, password);
if (rs) {
System.out.println("成功登录系统!");
break; // 跳出for循环,代表登录完成
}else {
if (2 - i == 0) {
System.out.println("您账号被锁!");
}else {
System.out.println("你还有" + (2 - i) + "次机会去登录!");
}
}
}
}
/**
* 开发一个登录方法,对用户的登录名和密码进行正确认证
*/
public static boolean login(String loginName, String password) {
// 准备系统的正确的用户名和密码
String okLoginName = "changchunhua";
String okPassword = "123456";
if (loginName.equals(okLoginName) && password.equals(okPassword)) {
return true;
}else {
return false;
}
}
}
运行结果:
请您输入登录名:
changchunhua
请您输入登录密码:
123456
成功登录系统!
注意:
字符串的比较使用==比较好吗?
不好,对于字符串对象的比较,==比较的是地址,容易出现业务Bug。
基本数据类型的变量或值应该使用==比较。
在开发中,比较字符串推荐使用什么方式比较?
使用String提供的equals方法,它只关心字符串内容一样就返回true。
小技巧:可以将代码改成这样:
使用String来开发验证码:
需求:
实现随机产生验证码,验证码的每位可能是数字、大写字母、小写字母。
package cn.ensource.string;
import java.util.Random;
public class StringCase2 {
public static void main(String[] args) {
//
String rs1 = createCode(6);
System.out.println("产生的随机数验证码:" + rs1);
String rs2 = createCode(8);
System.out.println("产生的随机数验证码:" + rs2);
}
/**
* 1、设计一个方法,返回指定位数的验证码
*/
public static String createCode(int n) {
// 定义两个变量
// 定义可能全部用到的字符
String code = "";
String data = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
// 开始定义一个循环产生每位随机字符
Random r = new Random();
for (int i = 0; i < n; i++) {
// 随机产生一个字符范围内的索引
int index = r.nextInt(data.length());
code += data.charAt(index);
}
return code;
}
}
运行结果:
帮助文档查看String常用方法(记忆)
1、equals
2、charAt
3、length