ss:如果单车列表里面的单车删完了,值就为空,需要判断
package com.javasm.service.impl; import com.javasm.bean.Bike; import com.javasm.bean.BikeCompany; import com.javasm.constants.BikeConstants; import com.javasm.service.BikeService; import java.util.Arrays; import java.util.Date; import java.util.Scanner; public class BikeServiceImpl implements BikeService { @Override public void showBike(BikeCompany[] bikeCompanies) { System.out.println("迷你共享单车管理系统>>>管理员操作>>>查看单车"); for (BikeCompany bikeCompany : bikeCompanies) { System.out.println(bikeCompany); //该公司下单车信息 Bike[] bikes = bikeCompany.getBikes(); if (bikes == null) { System.out.println("[该单车品牌下没有任何的单车信息!]"); continue; } for (Bike bike : bikes) { System.out.println(bike); } System.out.println("---------------------------------------------------------------------"); } } @Override public void putBike(BikeCompany[] bikeCompanies, Scanner scanner) { System.out.println("迷你共享单车管理系统>>>管理员操作>>>投放单车"); //显示公司列表 for (BikeCompany bikeCompany : bikeCompanies) { System.out.println(bikeCompany.getCompanyId() + "-->" + bikeCompany.getCompanyName()); } //选择单车品牌 System.out.println("请输入要操作的单车品牌:"); int inputCompanyId = scanner.nextInt(); //根据品牌id查找品牌信息 BikeCompany bikeCompany = getBikeCompanyById(inputCompanyId, bikeCompanies); //先判断 if (bikeCompany == null) { System.out.println("[投放失败,该单车品牌不存在!]"); return; } //允许投放 System.out.println("请输入要投放的单车数量:"); int count = scanner.nextInt(); //获取单车品牌下的单车列表 Bike[] putBikes = bikeCompany.getBikes(); //001
//如果单车列表里面的单车删完了,值就为空,需要判断 //扩容之前的数组的长度 int oldLength = checkBikes(putBikes) ? 0 : putBikes.length; //扩容之前最后一个单车的编号 int lastId = checkBikes(putBikes) ? getStartId(bikeCompany.getCompanyName()) : putBikes[oldLength - 1].getBikeId(); //扩容 putBikes = checkBikes(putBikes) ? new Bike[count] : Arrays.copyOf(putBikes, putBikes.length + count); //002 //循环来存入单车对象 for (int i = oldLength; i < putBikes.length; i++) { lastId = ++lastId; putBikes[i] = new Bike(lastId, bikeCompany.getCompanyName() + lastId, BikeConstants.UN_LEND_STATE, null, null); } //将扩容之后的数组反填充 bikeCompany.setBikes(putBikes); //总数 bikeCompany.setSum(putBikes.length); System.out.println("投放<" + count + ">辆<" + bikeCompany.getCompanyName() + ">车成功!"); } @Override public void deleteBike(BikeCompany[] bikeCompanies, Scanner scanner) { System.out.println("迷你共享单车管理系统>>>管理员操作>>>删除单车"); //显示公司列表 for (BikeCompany bikeCompany : bikeCompanies) { System.out.println(bikeCompany.getCompanyId() + "-->" + bikeCompany.getCompanyName()); } //选择单车品牌 System.out.println("请输入要操作的单车品牌:"); int inputCompanyId = scanner.nextInt(); //根据品牌id查找品牌信息 BikeCompany bikeCompany = getBikeCompanyById(inputCompanyId, bikeCompanies);
//先判断 if (bikeCompany == null) { System.out.println("[删除失败,该单车品牌不存在!]"); return; } int count = 0; //统计未借出数量 Bike[] deleteBikes = bikeCompany.getBikes(); if (deleteBikes == null) { System.out.println("[该单车品牌下没有任何的单车信息!]"); return; } //展示该品牌的未借出的单车信息 for (Bike deleteBike : deleteBikes) { if (deleteBike.getBikeState() == BikeConstants.UN_LEND_STATE) { System.out.println(deleteBike); count++; } } if (count == 0) { System.out.println("[该品牌下没有任何可以删除的车辆!]"); return; } //开始删除 System.out.println("请输入要删除的单车编号:"); int bikeId = scanner.nextInt(); //根据单车编号查找对应的索引位置 int index = getBikeIndexById(deleteBikes, bikeId); //先判断 if (index == -1) { System.out.println("[删除失败,该单车不存在!]"); return; } //判断状态 Bike deleteBike = deleteBikes[index]; if (deleteBike.getBikeState() == BikeConstants.LEND_STATE) { System.out.println("[删除失败,该单车已借出!]"); return; } //允许删除 for (int i = index; i < deleteBikes.length - 1; i++) { //后一个元素覆盖前一个 deleteBikes[i] = deleteBikes[i + 1]; } //缩容 deleteBikes = Arrays.copyOf(deleteBikes, deleteBikes.length - 1);
//长度为0,给null if (deleteBikes.length == 0) { bikeCompany.setBikes(null); bikeCompany.setSum(0); } else { //反填充 bikeCompany.setBikes(deleteBikes); bikeCompany.setSum(deleteBikes.length); } System.out.println("[删除<" + bikeCompany.getCompanyName() + ">公司下的<" + deleteBike.getBikeName() + ">车成功!]"); } /** * 根据单车编号查找对应索引 * * @param bikes * @param bikeId * @return */ private int getBikeIndexById(Bike[] bikes, int bikeId) { for (int i = 0; i < bikes.length; i++) { if (bikeId == bikes[i].getBikeId()) { return i; } } return -1; } /** * 根据品牌编号查找品牌信息 * * @param id * @param bikeCompanies * @return */ private BikeCompany getBikeCompanyById(int id, BikeCompany[] bikeCompanies) { for (BikeCompany bikeCompany : bikeCompanies) { if (id == bikeCompany.getCompanyId()) { return bikeCompany; } } return null; } /** * 根据公司名称获取起始ID * * @param name * @return */ private int getStartId(String name) { switch (name) { case BikeConstants.OFO: return BikeConstants.OFO_START_ID; case BikeConstants.HALO: return BikeConstants.HALO_START_ID; case BikeConstants.MO_BAI: return BikeConstants.MO_BAI_START_ID; } return 0; } /** * 判断单车列表 * * @param bikes * @return */ private boolean checkBikes(Bike[] bikes) { return bikes == null || bikes.length == 0; } }
package com.javasm.constants; import javax.swing.plaf.synth.SynthTextAreaUI; /** * @Author:liulei * @Version:1.0 * @Date:2022/11/24-16:13 * @Since:jdk1.8 * @Description: */ public class BikeConstants { //公司名称 public static final String OFO = "ofo小黄车"; public static final String MO_BAI = "摩拜"; public static final String HALO = "哈罗"; //单车借出状态(0、未借出 1、已借出) public static final int LEND_STATE = 1; public static final int UN_LEND_STATE = 0; //单车的起始ID public static final int OFO_START_ID = 99; public static final int MO_BAI_START_ID = 199; public static final int HALO_START_ID = 299; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗