package _edu.mama.ls15.homework;

    import _java.io.File;
    _import _java.io.FileInputStream;
    _import _java.io.FileNotFoundException;
    _import _java.io.InputStream;
    _import _java.math.BigDecimal;
    _import _java.nio.charset.StandardCharsets;
    _import _java.util.ArrayList;
    _import _java.util.Collections;
    _import _java.util._List
    ;
    _import _java.util.Random;

    public class _Homework {
    /
    第一题:count个人抢总额为amount的拼手气红包

    要求:
    1、通过程序限制,每人最多能抢200元
    2、通过程序限制,最多允许10人参与抢红包
    3、红包金额单位为元,保留2位小数
    4、打印每个人红包的金额
    5、打印手气最佳者的序号和金额

    _
    @param amount 拼手气红包总金额
    *
    @param count 抢红包的人数
    */
    public static void _redEnvelope(BigDecimal amount, _int _count) {
    //每个人最少抢0.01元,最多抢200元,最多10人参与
    if (amount.doubleValue() < count 0.01 || amount.doubleValue() > count 200) {
    System.out.println(“请重新调整红包金额”);
    _return
    ;
    }
    if (count > 10) {
    System.out.println(“请重新调整抢红包人数”);
    return;
    }
    Random random = new _Random();
    //将红包金额用分(单位)表示
    int money = amount.multiply(BigDecimal._valueOf(100)).intValue();
    //随机数总额
    double _num = 0;
    //存放每人获得随机点数
    double[] arrRandom = _new double[count];
    //存放每人获得钱数
    List
    arrMoney = new _ArrayList<>(count);
    //分配随机点
    for (_int _i = 0; i < arrRandom.length; i++) {
    _int _r = random.nextInt((count) * 99) + 1;
    num += r;
    arrRandom[i] = r;
    }
    //计算每个人拆红包获得金额
    int c = 0;
    _for
    (int _i = 0; i < arrRandom.length; i++) {
    //计算每个人的随机数占比
    double x = arrRandom[i] / num;
    //每人通过百分比获得金额
    int m = (_int) Math.floor(x * money);
    //如果获得0金额,则设置最小值1分钱,如果获得大于200元则设置最大值20000分
    if
    (m == 0) {
    m = 1;
    }
    if (m > 20000) {
    m = 20000;
    }
    //计算已抢总额
    _c += m;
    //如果是最后一个人,则把剩余的钱都给他,剩余数若大于200元,则只给200元
    if (i == arrRandom.length - 1) {
    _int _restMoney = money - c + m;
    _if
    (restMoney > 20000) {
    restMoney = 20000;
    }
    arrMoney.add(new _BigDecimal(restMoney).divide(_new _BigDecimal(100)));
    } _else
    {
    arrMoney.add(new _BigDecimal(m).divide(_new _BigDecimal(100)));
    }
    }
    // 随机打乱每人获得金额
    Collections._shuffle(arrMoney);
    //打印各个玩家获取金额
    _BigDecimal b = _new _BigDecimal(0);
    _for
    (int _i = 0; i < arrMoney.size(); i++) {
    System.out.println(i + “号玩家” + arrMoney.get(i) + “元”);
    b = b.add(arrMoney.get(i));
    }
    System.out.println(“已抢总额:” + b +”元”);
    //打印获取金额最大者
    for (_int _i = 0; i < arrMoney.size(); i++) {
    _if
    (arrMoney.get(i).equals(Collections.max(arrMoney))) {
    System.out.println(“手气最佳是” + i + “号玩家” + Collections.max(arrMoney) + “元”);
    }
    }
    }
    _/

    第二题:断点续读
    要求:上次已经从filePath种读取了一部分内容lastRead,但并没有全部读取完成,继续读取文件中的剩余内容并返回
    提示:查看API

    @param filePath 文件路径
    @param lastRead 上次读取到的内容
    */
    public static String continueRead (String filePath, String lastRead) _throws _Exception{
    //TODO 这里写下你的代码
    File file = _new _File(filePath);
    InputStream input = _new _FileInputStream(file);
    input.skip(lastRead.getBytes(StandardCharsets.UTF_8).length);
    _byte
    [] bytes = input.readAllBytes();
    input.close();
    String content = new _String(bytes, “UTF-8”);
    _return _content;
    }
    _public static void _main(String[] args) _throws _Exception {
    //第一题
    redEnvelope(BigDecimal._valueOf(800), 9);
    System.out.println(“——————————————————-“);
    //第二题
    _String other = _continueRead
    (“E:\Project\LS15/res/晖哥语录.txt”, “人性无所谓善与恶”);
    System.out.println(other);
    }
    }