java基础-IO流(随机点名器)

第一问:

复制代码
package Day13_IO;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;

public class IOTest03 {
    public static void main(String[] args) throws IOException {
        //创建读取对象
        ArrayList<String> list=new ArrayList<>();
        BufferedReader br = new BufferedReader(new FileReader("E:\\java\\javase\\basic\\javadown\\test5.txt"));
        //每次读一行
        String s;
        while((s=br.readLine())!=null){
            list.add(s);
        }
        //随机读取数据
        Random random=new Random();
        int i = random.nextInt(list.size());
        String name = list.get(i).split("-")[0];
        System.out.println(name);
    }
}

第二问:

复制代码
package Day13_IO;

import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

public class IOTest04 {
    public static void main(String[] args) throws IOException {
        //1、创建男生和女生集合
        ArrayList<String> boyList = new ArrayList<>();
        ArrayList<String> girlList = new ArrayList<>();
        BufferedReader br = new BufferedReader(new FileReader("E:\\java\\javase\\basic\\javadown\\test5.txt"));
        //把读取的数据分别存到男生集合和女生集合
        String line;
        while((line=br.readLine())!=null){
            if(line.split("-")[1].equals("男")){
                boyList.add(line);
            }else {
                girlList.add(line);
            }
        }
        //开始抽数
        int boyCount=0,girlCount=0;
        for (int i = 0; i < 1000000; i++) {
            Random random=new Random();
            int boyRandomNumber = random.nextInt(boyList.size());
            int girlRandomNumber = random.nextInt(girlList.size());
            int number = getNumber();
            if(number==1){
                boyList.get(boyRandomNumber);
                boyCount++;
            }else{
                girlList.get(girlRandomNumber);
                girlCount++;
            }
        }
        //循环完结束之后,计算boyCount和girlCount的占比

        double j = Math.round((girlCount * 100) / 1000000.0);
        double i = Math.round((boyCount * 100) / 1000000.0);
        System.out.println("男孩的概率 "+String.format("%.2f", i)+"%");
        System.out.println("女孩的概率 "+String.format("%.2f", j)+"%");


    }
    //定义一个方法,用来表示概率
    public static int getNumber(){
        ArrayList<Integer> number = new ArrayList<>();
        Collections.addAll(number,1,1,1,1,1,1,1,0,0,0);//1:男生,0:女生
        Random random = new Random();
        int i = random.nextInt(number.size());
        return number.get(i);
    }
}

第三问:

复制代码
package Day13_IO;

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

public class IOTest05 {
    public static void main(String[] args) throws IOException {
        //点名作弊器:程序执行三次后,必须点到张三
        //1、先读取姓名文件,存到集合中
        BufferedReader br = new BufferedReader(new FileReader("E:\\java\\javase\\basic\\javadown\\test5.txt"));
        ArrayList<String> nameList = new ArrayList<>();
        String str;
        while((str=br.readLine())!=null){
            nameList.add(str);
        }
        //2、读取存档文件
        BufferedReader br4 = new BufferedReader(new FileReader("E:\\java\\javase\\basic\\javadown\\test4.txt"));
        String s = br4.readLine();
        int number = Integer.parseInt(s);
        if(number==2){
            System.out.println("张三");
        }else{
            //3、随机读取姓名
            Collections.shuffle(nameList);
            System.out.println(nameList.get(0));
            number++;
            //写入到存档文件
            BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\java\\javase\\basic\\javadown\\test4.txt"));
            bw.write(String.valueOf(number));
            bw.newLine();
            bw.close();
        }
        br.close();
        br4.close();
    }
}

第四问:

复制代码
package Day13_IO;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Random;

public class IOTest06 {
    public static void main(String[] args) throws IOException {
        //读取本地文件
        BufferedReader br = new BufferedReader(new FileReader("E:\\java\\javase\\basic\\javadown\\test5.txt"));
        ArrayList<String> nameList = new ArrayList<>();
        ArrayList<String> tempList = new ArrayList<>();
        //姓名数据写入到nameList
        String str;
        while((str=br.readLine())!=null){
            nameList.add(str);
        }
        int size = nameList.size();
        for (int i1 = 1; i1 < 11; i1++) {
            System.out.println("=========第"+i1+"轮=============");
            for (int i = 0; i < size; i++) {
                Random random = new Random();
                int j = random.nextInt(nameList.size());
                System.out.println(nameList.get(j));
                String remove = nameList.remove(j);
                tempList.add(remove);
            }
            nameList.addAll(tempList);
            tempList.clear();
        }
        br.close();
    }
}

第五问:

复制代码
package Day13_IO;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;

public class IOTest07 {
    public static void main(String[] args) throws IOException {
        //1、读取文件中的数据
        BufferedReader br = new BufferedReader(new FileReader("E:\\java\\javase\\basic\\javadown\\test5.txt"));
        //2、创建集合存储对象
        ArrayList<Student> students = new ArrayList<>();
        String line;
        while((line=br.readLine())!=null){
            String[] split = line.split("-");
            Integer age = Integer.parseInt(split[2]);
            Double weight = Double.parseDouble(split[3]);
            Student student = new Student(split[0], split[1], age, weight);
            students.add(student);
        }
        //3、计算总权重
        double weightSum=0;
        for (Student student : students) {
            weightSum+=student.getWeight();
        }
        //4、计算每个学生的占比,并存起来
        double[] arr=new double[students.size()];
        int i=0;
        for (Student student : students) {
            arr[i]=student.getWeight()/weightSum;
            i++;
        }

        //5、计算每一个人的权重占比范围
        //[0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
        //结果应该是{0.0~0.1,0.1~0.2,0.2~0.3,0.3~0.4,0.4~0.5,0.5~0.6,0.7~0.8,0.9~1.0}
        for (int j = 1; j < arr.length; j++) {
            arr[j]=arr[j]+arr[j-1];
        }
        System.out.println(Arrays.toString(arr));
        //6、随机抽取
        //获取一个0.0~1.0的随机数
        double number= Math.random();
        System.out.println(number);
        //二分查找法:Arrays.binarySearch
        //如果要查找的数据不存在,会返回负的插入点减一。比如返回了-4,那么就代表着要插入的位置是3索引的位置
        int index = Arrays.binarySearch(arr, number);
        int result=-index-1;//拿到实际的位置
        Student student = students.get(result);
        System.out.println(student);
        //获取到该学生的权重,并且修改权重,然后重新赋值给该学生
        student.setWeight(student.getWeight()/2);
        System.out.println(students);
        //7、把集合中的数据重新写到文件中
        BufferedWriter bw = new BufferedWriter(new FileWriter("E:\\java\\javase\\basic\\javadown\\test5.txt"));
        for (Student eachStudent : students) {
            String newResult = eachStudent.getName() +
                    "-" + eachStudent.getGender() +
                    "-" + eachStudent.getAge() +
                    "-" + eachStudent.getWeight();
            bw.write(newResult);
            bw.newLine();
        }
        bw.close();
        br.close();
    }
}
相关推荐
phltxy4 分钟前
Spring AI 智能咨询系统综合实战
java·人工智能·spring
稷下元歌5 分钟前
python核心基础,这关于基于Moveltg加 Ros2实战Python编程基础实课
开发语言·python
java1234_小锋8 分钟前
Spring Boot 中 Starter 是什么?它的核心规范有哪些?请说明如何自定义一个 Starter。
java·spring boot·后端
良枫8 分钟前
自进化 agent:核心模块一任务规划器 Planner
java·服务器·windows
AI人工智能+电脑小能手11 分钟前
【大白话说Java面试题 第114题】【并发篇】第14题:说一下悲观锁的优点和缺点?
java·开发语言·面试
财经资讯数据_灵砚智能12 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年6月10日
大数据·人工智能·python·ai·信息可视化·自然语言处理·灵砚智能
盒马盒马14 分钟前
Rust:Vec
开发语言·rust
Wonderful U14 分钟前
Python+Django实战|企业客户关系管理系统(CRM):客户档案、跟进记录、商机管理、合同签约、回款追踪、客户分层、数据分析
python·数据分析·django
让我上个超影吧15 分钟前
Claude Code 源码看 Agent 系统设计
java·ai·ai编程
Wonderful U15 分钟前
Python+Django实战|企业办公用品申领管理系统:物资入库、库存预警、申领审批、归还登记、损耗统计、供应商对账
android·python·django