目录
生成假数据
利用糊涂包生成假数据
随机点名器
综合练习
生成假数据
制造假数据
制造假数据也是开发中的一个能力
在各个网上爬取数据
这是其中一个方法
爬取网站中的内容
import cn.hutool.core.io.FileUtil;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) throws IOException {
//定义变量记录网址
String BHU="https://www.beihua.edu.cn/info/1053/7154.htm";
//爬取数据,把网址上的数据拼成一个字符串
//爬取出来的是网页的源代码
String str=webCrawler(BHU);
//通过正则表达式把其中符合要求的数据获取出来
//第一个参数是字符串,第二个参数是正则表达式
ArrayList<String>List=getDate(str,"[\\u4e00-\\u9fa5]*北华[\\u4e00-\\u9fa5]*");
for (String s : List) {
System.out.println(s);
}
FileUtil.writeLines(List,"C:\\Users\\ZDY\\Desktop\\Dduo\\untitled\\BHU.txt","UTF-8",true);
System.out.println("爬取成功");
}
/*
*
*从网络中爬取数据,把数据拼成字符串返回
*
* 形参:网址
* 返回值:爬取到的数据
*
* */
public static String webCrawler(String net) throws IOException {
//定义一个StringBuilder拼接爬取到的数据
StringBuilder sb=new StringBuilder();
//创建一个URL对象
URL url=new URL(net);
//连接上网址
//保证网址是畅通的,而且这个网址是可以连接上的
URLConnection conn=url.openConnection();
//读取数据 等于是获取了字节流
InputStreamReader isr=new InputStreamReader(conn.getInputStream());
int ch;
while((ch=isr.read())!=-1){
sb.append((char)ch);
}
isr.close();
return sb.toString();
}
/*
*
* 根据正则表达式获取字符串中的内容
*
* 形参1:完整的字符串
* 形参2:正则表达式
*
*
* */
private static ArrayList<String> getDate(String str, String regex) {
//想要获取什么,就写什么正则表达式
ArrayList<String>list =new ArrayList<>();
//按照正则表达式的规则,去获取数据
Pattern pattern=Pattern.compile(regex);
//按照pattern的规则,到src当中获取数据
Matcher matcher=pattern.matcher(str);
while(matcher.find()){
String s=matcher.group();
// System.out.println(matcher.group());
list.add(s);
}
return list;
}
}
利用糊涂包生成假数据
利用了hutool工具包
可以爬取开源中国的开源资讯
随机点名器
求出每一个数据的权重占比
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
//把文件中所有的数据读取到内存中封装成对象统一管理
ArrayList<Student>list=new ArrayList<>();
BufferedReader br=new BufferedReader(new FileReader("C:\\Users\\ZDY\\Desktop\\Dduo\\untitled\\a.txt"));
String line;
while ((line=br.readLine())!=null){
//System.out.println(line);
String str[]= line.split("-");
list.add(new Student(str[0],str[1],Integer.parseInt(str[2]),Double.parseDouble(str[3])));
}
br.close();
//写带权重的随机
//计算权重的总和
double weight=0;
for (Student stu : list) {
weight+=stu.getWeight();
}
//计算每一个人的实际占比
double[] arr=new double[list.size()];
int index=0;
for (Student stu : list) {
arr[index]=stu.getWeight()/weight;
index++;
}
//求出每一个权重占比范围
for (int i = 1; i < arr.length; i++)
arr[i]=arr[i]+arr[i-1];
//随机抽取 0~1的浮点数
double number=Math.random();
//判断number在arr中的位置
//二分查找算法
int index2=Arrays.binarySearch(arr,number);
//方法返回值为插入点乘负一后减去1
int index3=(index2+1)*-1;
//输出获取到的学生
Student s=list.get(index3);
System.out.println(s);
//修改当前学生的权重
s.setWeight(s.getWeight()/2);
//把集合中的数据再次写到文件当中
BufferedWriter bw=new BufferedWriter(new FileWriter("C:\\Users\\ZDY\\Desktop\\Dduo\\untitled\\a.txt"));
for (Student stu : list) {
bw.write(stu.toString());
bw.newLine();
}
bw.close();
//遍历集合
for (Student student : list) {
System.out.println(student);
}
}
}
综合练习
写一个登录的小案例
将正确的用户名和密码手动保存在本地的userinfo.txt文件中
保存格式为:username=zhangsan & password=123 & count=0;
让用户键盘录入用户名和密码
比较用户录入的和正确的用户名密码是否一致
如果一致则打印登录成功
如果不一致则打印登录失败
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class LoginExample {
private static final String FILENAME = "userinfo.txt";
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 提示用户输入用户名和密码
System.out.print("请输入用户名: ");
String usernameInput = scanner.nextLine().trim();
System.out.print("请输入密码: ");
String passwordInput = scanner.nextLine().trim();
// 检查用户名和密码是否匹配
if (isValidUser(usernameInput, passwordInput)) {
System.out.println("登录成功");
} else {
System.out.println("登录失败");
}
scanner.close();
}
private static boolean isValidUser(String username, String password) {
try (BufferedReader br = new BufferedReader(new FileReader(FILENAME))) {
String line;
while ((line = br.readLine()) != null) {
// 解析每一行中的用户名、密码和登录次数
String[] parts = line.split("&");
String savedUsername = parts[0].split("=")[1].trim();
String savedPassword = parts[1].split("=")[1].trim();
// 检查用户名和密码是否匹配
if (username.equals(savedUsername) && password.equals(savedPassword)) {
return true;
}
}
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
}