posts - 45,comments - 0,views - 4815

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;
}
复制代码

 

posted on   小贤看世界  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示