今日学习目标
- 能够完成练习一: 验证码案例
- 能够完成练习二:用户的登录与注册
- 能够完成练习三:数组的选择排序法
- 能够完成练习四:数组的冒泡排序法
- 能够完成练习五:找出文本数据中的女性
- 能够完成练习六:字符串中替换敏感词汇
0.1 练习一 验证码
- 生成验证码案例,写一个程序生成一个四位的验证码,验证码取值范围大写字母与数字。
验证码需要的数字和字母存储到数组中,随机数作为数组的索引使用,随机4次,即获取到4个字符,4个字符连接为一个字符串.
用户输入验证码,和已经生成的验证码进行比较判断
public static void main(String[] args) {
//定义字符数组,存储作为验证码需要的字符
char[] ch = {‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’J’,’K’,’L’,’M’,’N’,’P’,’Q’,’R’,’S’,’T’,’U’,
‘V’,’W’,’X’,’Y’,’Z’,’0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’};
//字符串缓冲区
StringBuilder builder = new StringBuilder();
//随机数类
Random ran = new Random();
for(int x = 0 ; x < 4 ; x++){
//生成随机数,范围是0到数组的长度
int ranNumber = ran.nextInt(ch.length);
//随机数作为索引,到数组中获取字符
char c = ch[ranNumber];
//将字符存储到缓冲区
builder.append(c);
}
//缓冲区转成字符串
String code = builder.toString();
System.out.println(code);
//用户键盘输入
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
//用户输入和验证码进行比较,要忽略大小写
if(code.equalsIgnoreCase(str)){
System.out.println(“验证码正确”);
}else{
System.out.println(“验证码输入错误”);
}
}
0.2 练习二 登录注册
用户登录注册案例(含登录、注册功能)
集合存储用户的数据(用户名和密码)
用户菜单1 注册功能 2 登录功能 3 退出
注册功能: 用户输入用户名和密码,封装到User对象中,存储到集合中
登录功能: 用户输入用户名和密码,从集合中取出User对象,比较已经存储的用户名和密码
public class User{
private String username;
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public static void main(String[] args) {
//创建集合,存储User对象
ArrayList
//存储用户数据
User u1 = new User(“admin”,”123”);
User u2 = new User(“root”,”root”);
list.add(u1);
list.add(u2);
Scanner sc = new Scanner(System.in);
//实现用户菜单功能
while(true){
System.out.println(“选择1进入注册 选择2进入登录 选择3退出”);
String menu = sc.nextLine();
//选择的菜单进行判断,进入功能
if(“1”.equals(menu)){
//调用注册方法,传递集合对象
reg(list);
System.out.println(“注册成功”);
}else if(“2”.equals(menu)){
//调用登录方法,传递集合对象
boolean flag = login(list);
if(flag){
System.out.println(“登录成功”);
}else{
System.out.println(“登录失败”);
}
}else if(“3”.equals(menu)){
System.exit(0);
}else{
System.out.println(“输入错误”);
}
}
}
/
实现登录功能
用户输入的用户名和密码和已经存储到集合中User对象中数据比较
比较成功,即登录成功返回true
否则返回false
参数: 集合对象
返回值: booleank
/
public static boolean login(ArrayList
Scanner sc = new Scanner(System.in);
System.out.println(“选择的是登录功能,请输入用户名”);
String username = sc.nextLine();
System.out.println(“请输入密码”);
String password = sc.nextLine();
//遍历集合,获取每个User对象
for(int x = 0 ; x < list.size();x++){
User u = list.get(x);
//输入的用户名密码,和User对象中的用户名密码进行比较
if(username.equals(u.getUsername()) && password.equals(u.getPassword())){
return true;
}
}
return false;
}
/
实现注册功能
将用户输入的用户名和密码封装到User对象
User对象存储到集合中
参数: 集合对象
返回值 void
不考虑用户名是否重复
/
public static void reg(ArrayList
Scanner sc = new Scanner(System.in);
System.out.println(“选择的是注册功能,请输入用户名”);
String username = sc.nextLine();
System.out.println(“请输入密码”);
String password = sc.nextLine();
//用户名密码封装到User对象
User u = new User(username, password);
list.add(u);
}
0.3 练习三 数组选择排序
数组的排序: 将数组中的元素按照从小到大的升序排列.
数组排序的思想是比较元素的大小,进行位置上的交换,最小的元素放在0索引上
- 数组的选择排序: 数组中的每个元素都和其他元素进行比较换位置
public static void main(String[] args) {
int[] arr = { 3, 5, 1, 6, 2, 4, 0 };
**for** (**int** x = 0; x < arr.length - 1; x++) {<br /> **for** (**int** y = x + 1; y < arr.length; y++) {<br /> **if** (arr[x] > arr[y]) {<br /> **int** temp = arr[x];<br /> arr[x] = arr[y];<br /> arr[y] = temp;<br /> }<br /> }<br /> }
**for** (**int** x = 0; x < arr.length; x++) {<br /> System.**_out_**.println(arr[x]);<br /> }
}
0.4 练习四 数组冒泡排序
- 数组的冒泡排序: 数组中的每个元素都和相邻元素进行比较换位
**public** **static** **void** main(String[] args) {<br /> **int**[] arr = { 3, 5, 1, 6, 2, 4, 0 };
**for** (**int** x = 1; x < arr.length; x++) {<br /> **for** (**int** y = 0; y < arr.length - x; y++) {<br /> **if** (arr[y] > arr[y + 1]) {<br /> **int** temp = arr[y];<br /> arr[y] = arr[y + 1];<br /> arr[y + 1] = temp;<br /> }<br /> }<br /> }
**for** (**int** x = 0; x < arr.length; x++) {<br /> System.**_out_**.println(arr[x]);<br /> }<br /> }
0.5 练习五 找出文本数据中的女性
读取学生信息文本,每行数据如 张三,男,3班 每行信息姓名,性别,班级 读取文本,并将所有女生信息存储至集合中
定义集合ArrayList,存储学生对象(学生对象三个属性,姓名,性别,班级)
以行的方式读取文本文件,每行进行逗号切割,判断数组的1索引是不是女,如果是就存储到集合中
public class Student{
private String name;
private String sex;
private String classes;
public Student(String name, String sex, String classes) {
this.name = name;
this.sex = sex;
this.classes = classes;
}
public Student() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getClasses() {
return classes;
}
public void setClasses(String classes) {
this.classes = classes;
}
}
public static void main(String[] args) throws IOException{
//创建集合对象,存储Student对象
ArrayList
//字符输入流,读取文本文件
FileReader fr = new FileReader(“c:\student.txt”);
//字符输入流缓冲流
BufferedReader bfr = new BufferedReader(fr);
String line = null;
while((line = bfr.readLine())!=null){
//读取到的每行文本进行逗号切割
String[] str = line.split(“,”);
//判断数组的1索引是不是 女
if(“女”.equals(str[1])){
//将数据存储到Student对象
Student stu = new Student(str[0], str[1], str[2]);
//stu对象存储到集合中
array.add(stu);
}
}
bfr.close();
//遍历集合
for(int x = 0 ; x < array.size();x++){
Student stu = array.get(x);
System.out.println(stu.getName()+” “+stu.getSex()+” “+stu.getClasses());
}
}
0.6 练习六 替换词汇
将文本中的所有的敏感词汇替换成 按行读取文本文件,读取到的字符串中查找是否有敏感词汇,如果有就替换成,并将这一行字符串写到新的文件中. 敏感词汇自定义 public static void main(String[] args) throws IOException{ //定义字符串数组,存储自定义的敏感词汇 String[] words = {“去你的”,”你大爷”,”滚蛋”,”无脑”}; //字符输入流读取文本文件 FileReader fr = new FileReader(“c:\\word.txt”); //字符输入流的缓冲流 BufferedReader bfr = new BufferedReader(fr); //字符输出流.写新文件 FileWriter fw = new FileWriter(“c:\\newWord.txt”); //字符输出流的缓冲流,写入换行 BufferedWriter bfw = new BufferedWriter(fw); String line = null; while((line = bfr.readLine())!=null){ //遍历数字,取出敏感词汇 for(int x = 0 ; x < words.length;x++){ //将敏感词汇替换成 line = line.replace(words[x], ““); } //替换后的字符串写入新文件 bfw.write(line); bfw.newLine(); } bfr.close(); bfw.close(); } |
||
---|---|---|