JavaSE 面向对象程序设计进阶 IO 综合练习 利用糊涂包生成假数据 随机点名器 登录案例

news2024/9/24 9:48:11

目录

生成假数据

利用糊涂包生成假数据

随机点名器

综合练习

生成假数据

制造假数据

制造假数据也是开发中的一个能力

在各个网上爬取数据

这是其中一个方法

爬取网站中的内容

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;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1920862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

银行函证业务的数字化转型:合合信息智能文档处理平台如何实现集中化处理与全流程合规?

“银行函证”是注册会计师在获取被审计单位授权后&#xff0c;直接向银行业金融机构发出询证函&#xff0c;银行业金融机构针对所收到的询证函&#xff0c;查询、核对相关信息并直接提供书面回函的过程。 财政部、银保监会联合发布《关于加快推进银行函证规范化、集约化、数字…

教程系列2 | 趋动云『社区项目』一步实现与 AI 对话

上周&#xff0c;我们沉浸于文生图【教程系列1 | 趋动云『社区项目』极速部署 SD WebUI】的奇幻世界&#xff0c;领略了文字转化为视觉的无限乐趣。本周我们继续与 AI 进行对话&#xff0c;探索智能交互的无限魅力&#xff01; Llama3-8B-Chinese-Chat Llama3-8B-Chinese-Cha…

system V共享内存【Linux】

文章目录 原理shmgetftokshmat(share memory attach)shmdt&#xff0c;去关联&#xff08;share memory delete attach&#xff09;shmctl ,删除共享内存共享内存与管道 原理 共享内存本质让不同进程看到同一份资源。 申请共享内存&#xff1a; 1、操作系统在物理内存当中申请…

PGCCC|【PostgreSQL】PCA认证考试大纲#postgresql认证

PostgreSQL Certified Associate|PCA&#xff08;初级&#xff09; 学员将学会安装、创建和维护PostgreSQL数据库。学完后&#xff0c;学员可以从事PostgreSQL数据库的数据操作和管理等工作。 获证途径 参加PostgreSQL培训再考试 考试为上机考试。 PostgreSQL PCA培训考试课…

【嵌入式Linux】<知识点> GDB调试(更新中)

文章目录 前言 一、GDB调试预备工作 二、GDB的启动与退出 三、GDB中查看源代码 四、GDB断点操作 五、GDB调试指令 前言 在专栏【嵌入式Linux】应用开发篇_Linux打工仔的博客中&#xff0c;我们已经写了大量的源程序。但是在调试这些程序时我们都是通过printf大法和肉眼除…

网络(一)——初始网络

文章目录 计算机网络的背景网络发展认识 "协议" 网络协议初识协议分层网络分层 网络传输基本流程数据包封装和分用网络中的地址管理认识IP地址认识MAC地址 计算机网络的背景 网络发展 独立模式:计算机之间相互独立 在最早的时候&#xff0c;计算机之间是相互独立的&…

【启明智显分享】乐鑫HMI方案4.3寸触摸串口屏应用于称重测力控制仪表

称重测力控制仪表是将称重传感器信号&#xff08;或再通过重量变送器&#xff09;转换为重量数字显示&#xff0c;并可对重量数据进行传输、储存、统计、打印的电子设备&#xff0c;常用于工农业生产中的自动化配料&#xff0c;称重&#xff0c;以提高生产效率。随着工业化的发…

Oracle11g_RAC for vmware workstation 安装教程(on suse11)

一、前言 本文介绍在vmware workstation环境下&#xff0c;基于suse11sp1操作系统安装Oracle11g RACASM 数据库&#xff08;两节点&#xff09;。 1.1 RAC中的基本概念 安装ORACLE RACASM前&#xff0c;您可能需要事先简要的了解RAC&#xff0c;CRS&#xff0c;ASM的概念。 1.1…

【Linux】01.Linux 的常见指令

1. ls 指令 语法&#xff1a;ls [选项] [目录名或文件名] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息 常用选项&#xff1a; -a&#xff1a;列出当前目录下的所有文件&#xff0c;包含隐藏文件…

java 实验一:Java集成开发环境的搭建

一、实验目的 1、掌握Java集成开发环境的搭建方式&#xff0c;重点掌握JDK/Eclipse的安装&#xff0c;同时熟悉开发环境的使用&#xff1b; 2、重点掌握JDK/Eclipse的安装&#xff0c;同时熟悉开发环境的使用&#xff1b; 3、会使用输出语句在命令行输出信息&#xff1b; 4…

智能合约和分布式应用管理系统:技术革新与未来展望

引言 随着区块链技术的不断发展&#xff0c;智能合约和分布式应用&#xff08;DApps&#xff09;逐渐成为数字经济中的重要组成部分。智能合约是一种自执行的协议&#xff0c;能够在预设条件满足时自动执行代码&#xff0c;而无需人工干预或中介机构。这种自动化和信任机制极大…

学习网络的第一步:全面解析OSI与TCP/IP模型

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hello,大家好!我是你们的好朋友小米。今天我们来聊一聊网络基础知识中的重量级选手——OSI模型和TCP/IP模型!网络的世界就像一个巨大的迷宫,而这两个…

Hadoop简明教程

文章目录 关于HadoopHadoop拓扑结构Namenode 和 Datanode 基本管理启动Hadoop启动YARN验证Hadoop服务停止Hadoop停止HDFS Hadoop集群搭建步骤准备阶段Java环境配置Hadoop安装与配置HDFS格式化与启动服务测试集群安装额外组件监控与维护&#xff1a; 使用Docker搭建集群使用Hado…

SQL构造一个触发器audit_log

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 构造一个触发…

华为如何做成数字化转型?

目录 企业数字化转型是什么&#xff1f; 华为如何定义数字化转型&#xff1f; 为什么做数字化转型&#xff1f; 怎么做数字化转型&#xff1f; 华为IPD的最佳实践之“金蝶云” 企业数字化转型是什么&#xff1f; 先看一下案例&#xff0c;华为经历了多次战略转型&#xf…

Python数据分析-乳腺癌诊断分析预测

一、研究背景 乳腺癌是全球女性中最常见的癌症之一&#xff0c;发病率和死亡率都处于较高水平。据世界卫生组织&#xff08;WHO&#xff09;统计&#xff0c;乳腺癌每年造成数百万女性的死亡&#xff0c;并且其发病率在许多国家呈上升趋势。乳腺癌的早期诊断对于提高患者的生存…

气膜仓储与传统仓储的成本优势对比—轻空间

随着物流和仓储需求的不断增长&#xff0c;企业对仓储设施的要求也日益提高。传统仓储设施虽然具有一定的优势&#xff0c;但在建设和运营成本上往往较高。近年来&#xff0c;气膜仓储作为一种新型仓储方式&#xff0c;以其独特的优势逐渐受到市场青睐。轻空间将详细探讨气膜仓…

小程序创建与项目初始化(构建 npm + 集成 Sass)

一、打开微信开发者工具 确认 左侧导航栏是否选中的 小程序点击 【】创建小程序 二、创建小程序 三、初始化 清空 app.wxss、app.js 去掉 rendererOptions 和 componentFramework 不需要最新的搜索引擎 留下以下文件 四、自定义构建 npm 集成 Sass 首先 先把小程序源…

如何使用Python正则表达式解析多行文本

使用 Python 的正则表达式来解析多行文本通常涉及到使用多行模式&#xff08;re.MULTILINE&#xff09;和 re.DOTALL 标志&#xff0c;以及适当的正则表达式模式来匹配你想要提取或处理的文本块。以下是一个简单的示例&#xff0c;展示了如何处理多行文本&#xff1a; 1、问题背…

maven编码报错

maven 编译的时候编码报错&#xff1a; classworlds For input string: "ㄻ孛孛"报错原因&#xff1a; maven 编码使用的是UTF-16 &#xff0c;系统中使用UFT-8 解决办法&#xff1a; 如下设置为UTF-8