String案例
1.String类开发验证码功能
需求:
- 随机生产一个5位的验证码,每位可能是数字、大写字母、小写字母。
分析:
- 定义一个String类型的变量存储验 a-z、A-Z、0-9 之间的全部字符。
- 循环5次,随机一个范围内的索引,获取对应字符连接起来即可。
实现:
1.定义可能出现的字符信息: a-z、A-Z、0-9
2.创建随机数对象,用于随机一个索引位置
3.定义一个空字符串的变量,用于连接5位验证码
4.定义for循环,循环5次:
(4.1) 每循环一次,就随机生成一个索引位置
(4.2) 调用String类API: charAt(),获取某个索引位置的字符
(4.3) 将获取到的字符连接起来
5.循环结束,输出验证码
package com.app.string;
import java.util.Random;
/**
练习题:使用String完成随机生成5位的验证码
*/
public class StringExce7 {
public static void main(String[] args) {
// 1.定义可能出现的字符信息: a-zA-Z0-9
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
// 2.创建随机数对象,用于随机一个索引位置
Random rd = new Random();
// 3.定义一个空字符串的变量,用于连接5位验证码
String code = "";
// 4.定义for循环,循环5次:
for (int i = 0; i < 5; i++) {
// i = 0 1 2 3 4
// (4.1) 每循环一次,就随机生成一个索引位置
int index = rd.nextInt(str.length());
// (4.2) 调用String类API: charAt(),获取某个索引位置的字符
char c = str.charAt(index);
// (4.3) 每循环一次,就将获取到的字符连接起来
code += c;
}
// 5.循环结束,输出验证码
System.out.println("随机验证码: " + code);
}
}
控制台:
随机验证码: UB96n
Process finished with exit code 0
2.模拟用户登录功能
需求:
- 模拟用户登录功能,密码或者用户名输错,最多只能给三次重新输入的机会。
分析:
- 系统后台定义一个正确的用户名及密码
- 用户输入自己的用户名及密码,后台判断用户名及密码 都是否与 正确的用户名及密码 匹配得上,是则登录成功~,否则用户名或密码错误!允许用户重新输入,但是最多只给三次机会。
实现:
1.定义正确的用户名和密码
2.创建键盘录入对象,用于用户输入用户名和密码
3.定义for循环,循环3次:
(3.1) 用户输入用户名和密码并用变量接收
(3.2) 判断用户名是否正确:
a: 用户名正确,判断密码是否正确:
(1) 密码正确,登录成功~ 结束循环
(2) 密码不正确,密码错误!循环不会结束,会让用户重新输入。
3次后,自动结束循环,因为 i<=3。
b: 用户名不正确,用户名错误!循环不会结束,会让用户重新输入。
3次后,自动结束循环,因为 i<=3。
package com.app.string;
import java.util.Scanner;
/**
练习题:使用String开发模拟用户登录功能
*/
public class StringExce8 {
public static void main(String[] args) {
// 1.定义正确的用户名和密码
String okUser = "LaoBaby";
String okPassword = "LaoBaby2022";
// 2.创建键盘录入对象,用于用户输入用户名和密码
Scanner sc = new Scanner(System.in);
// 3.定义for循环,循环3次:
for (int i = 1; i <= 3; i++) {
// i = 0 1 2
// (3.1) 用户输入用户名和密码并用变量接收
System.out.println("请您输入用户名: ");
String user = sc.next();
System.out.println("请您输入密码: ");
String password = sc.next();
// (3.2) 判断用户名是否正确:
if (user.equals(okUser)) {
// a: 用户名正确,判断密码是否正确:
if (password.equals(okPassword)) {
// (1) 密码正确,登录成功~ 结束循环
System.out.println("登录成功~");
break;
}else {
// (2) 密码不正确,密码错误!循环不会结束,会让用户重新输入。
System.out.println("密码错误!您还有" + (3-i) + "次机会!");
// 三次机会用完,会自动结束循环,因为 i <= 3
}
}else {
// b: 用户名不正确,用户名错误!循环不会结束,会让用户重新输入。
System.out.println("用户名错误!您还有" + (3-i) + "次机会!");
// 三次机会用完,会自动结束循环,因为 i <= 3
}
}
}
}
控制台:
请您输入用户名:
LaoBaby
请您输入密码:
LaoBaby2022
登录成功~
Process finished with exit code 0
--------------------------------------------------------------
请您输入用户名:
asd
请您输入密码:
asd
用户名错误!您还有2次机会!
请您输入用户名:
geg
请您输入密码:
afs
用户名错误!您还有1次机会!
请您输入用户名:
LaoBaby
请您输入密码:
LaoBaby2022
登录成功~
Process finished with exit code 0
---------------------------------------------------------------
请您输入用户名:
LaoBaby
请您输入密码:
213
密码错误!您还有2次机会!
请您输入用户名:
LaoBaby
请您输入密码:
242
密码错误!您还有1次机会!
请您输入用户名:
LaoBaby
请您输入密码:
4314
密码错误!您还有0次机会!
Process finished with exit code 0
2.手机号码屏蔽
需求:
- 以字符串形式从键盘录入一个手机号码,将中间四位号码屏蔽
分析:
- 调用键盘录入对象功能,录入一个手机号码
- 将录入的手机号码的中间四位号码屏蔽
实现:
1.创建键盘录入对象,用于录入手机号码
2.输入一个手机号码
3.判断输入的手机号码的个数 是否为11个数
(3.1) 是11个数:
a: 调用String类的API: substring,截取出中间四位号码
调用String类的API: replace,将截取到的四位号码替换成 "****"
b: 将屏蔽后的手机号码输出
(3.2) 不是11个数,提示: "这不是手机号码!"
package com.app.string;
import java.util.Scanner;
/**
练习题:使用String完成手机号码屏蔽
*/
public class StringExce9 {
public static void main(String[] args) {
// 1.创建键盘录入对象,用于录入手机号码
Scanner sc = new Scanner(System.in);
// 2.输入一个手机号码
System.out.println("请输入您的手机号码(11个数): ");
String phone = sc.next();
// 3.判断输入的手机号码的个数 是否为11个数
if (phone.length() == 11) {
// (3.1) 是11个数:
// a:调用String类的API: substring,截取出中间四位号码
// 调用String类的API: replace,将截取到的四位号码替换成 "****"
String secretPhone = phone.replace(phone.substring(3,7),"****");
// b: 将屏蔽后的手机号码输出
System.out.println(secretPhone);
}else {
// (3.2) 不是11个数,提示: "这不是手机号码!"
System.out.println("这不是手机号码!");
}
}
}
控制台:
请输入您的手机号码(11个数):
13833884384
138****4384
Process finished with exit code 0