目录
生成假数据
利用糊涂包生成假数据
随机点名器
综合练习
生成假数据
制造假数据
制造假数据也是开发中的一个能力
在各个网上爬取数据
这是其中一个方法
爬取网站中的内容
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);//方法返回值为插入点乘负一后减去1int 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;}
}