2016华为实习编程题:停车管理系统

题目就是上面的

但是对输出要求比较多的,输出没有截图下来,题目很简单的。主要一些错误操作

两个公共合法判断

1.操作合法

2.车牌号合法

3.停车场不存在

初始停车场:

1.左起还是右起 只能是0 或 1

2.可停车数量要合法

进入停车场:

1.该车是否存在

2.停车场是否由空车位

离开停车场:

1.车是否存在

其中几个比较简单了

Java

package Huawei;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class Parking {

    /**
     * @param args
     */
     // 车停的位置
    static ArrayList<String> parking = new ArrayList<String>();
    // 车停车次数
    static HashMap<String,Integer> count = new HashMap<String,Integer>();
    static int left = -1;
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        
        while(in.hasNext()){
            String[] strArr = in.nextLine().split(" ");
            if(strArr[0].equals("initPark"))
                initPark(strArr);
            else if(strArr[0].equals("enterPark"))
                enterPark(strArr);
            else if(strArr[0].equals("exitPark"))
                exitPark(strArr);
            else if(strArr[0].equals("countIdle"))
                countIdle(strArr);
            else if(strArr[0].equals("isExit"))
                isExit(strArr);
            else if(strArr[0].equals("isParking"))
                isParking(strArr);
            else if(strArr[0].equals("reset"))
                reset(strArr);
            else{
                System.out.println("ERROR");
            }
        }
    }
    /**
     * 重置停车场
     * @param strArr
     */
    public static void reset(String[] strArr){
        if(strArr.length !=1){
            System.out.println("reset error");
            return;
        }
        left = -1;
        parking.clear();
        count.clear();
    }
    /**
     * 是否以前在停车场停过 
     * @param strArr
     */
    public static void isParking(String[] strArr){
        if(strArr.length !=2){
            System.out.println("isParking error 1 ");
            return;
        }
        if(isNumber(strArr[1])==false || parking.size()<=0){
            System.out.println("isParking error 2");
            return;
        }
        if(count.containsKey(strArr[1])){
            System.out.println("isParking " + strArr[1]);
            return;
        }
        System.out.println("no parking");
    }
    /**
     * 是否在停车场
     * @param strArr
     */
    public static void isExit(String[] strArr){
        if(strArr.length !=2){
            System.out.println("isExit error 1 ");
            return;
        }
        if(isNumber(strArr[1])==false || parking.size()<=0){
            System.out.println("isExit error 2");
            return;
        }
        int i =0;
        for(i =0;i<parking.size();i++){
            if(parking.get(i).equals(strArr[1])){
                System.out.println("isExit "+ strArr[1]);
                return;
            }
        }
        System.out.println("isExit error 3 ");
    }
    /**
     * 统计空闲车位个数
     * @param strArr
     */
    public static void countIdle(String[] strArr){
        if(strArr.length !=1){
            System.out.println("countIdle error 1 ");
            return;
        }
        int countId = 0;
        for(int i =0;i<parking.size();i++){
            if(parking.get(i).equals("-1")){
                countId++;
            }
        }
        System.out.println("countIdle "+countId);
    }
    /**
     * 离开停车场
     * @param strArr
     */
    public static void exitPark(String[] strArr){
        if(strArr.length !=2){// 离开停车场的输入数组只能是两位数组
            System.out.println("error");
            return;
        }
        // 验证车牌号是否合法  停车场是否纯在
        if(isNumber(strArr[1])==false || parking.size()<=0){
            System.out.println("error");
            return;
        }
        int i =0;
        // 停车位值为 -1
        for( i =0;i<parking.size();i++){
            if(parking.get(i).equals(strArr[1])){
                parking.set(i, "-1");
                break;
            }
        }
        // 说明停车场没有这辆车
        if(i==parking.size()){
            System.out.println("error");
            return;
        }
        System.out.println("exitPark " + strArr[1]);
    }
    /**
     * 停车系统
     * @param strArr
     */
    public static void enterPark(String[] strArr){
        if(strArr.length !=2){// 进入停车场的输入只能是两位数组
            System.out.println("enterPark error 1");
            return;
        }
        // 验证车牌是否合法 停车位是否为0
        if(isNumber(strArr[1])==false|| parking.size()<=0){
            System.out.println("enterPark error 2 ");
            return;
        }
        int i = 0;
        // 验证车已经在停车场
        for( i =0;i<parking.size();i++){
            if(parking.get(i).equals(strArr[1])){
                System.out.println("enterPark error 3");// 已经存在
                return;
            }
        }
        // 左停 还是 右停
        if(left==0){
            for( i =0;i<parking.size();i++){
                if(parking.get(i).equals("-1")){
                    parking.set(i, strArr[1]);
                    break;
                }
            }
        }else{
            for(i =parking.size()-1;i>=0;i--){
                if(parking.get(i).equals("-1")){
                    parking.set(i, strArr[1]);
                    break;
                }
            }
        }
        // 没有停车空间
        if(i==-1 || i==parking.size()){
            System.out.println("no parking place");
            return;
        }
        // HashMap中记录该车停车的次数
        if(count.containsKey(strArr[1])){
            count.put(strArr[1],count.get(strArr[1]) + 1);
        }else{
            count.put(strArr[1],1);
        }
        System.out.println("welocome "+strArr[1]+","+ i + " parking place");
        
    }
    public static boolean isNumber(String str){
        
        boolean res = str.matches("[0-9]{5}");// 匹配5位车牌号
        return res;
    }
    /**
     * 初始化停车场
     * @param strArr
     */
    public static void  initPark(String[] strArr){
        if(strArr.length !=3){// 初始输入数组长度是 3 
            System.out.println("initPark error 1 ");
            return;
        }
        if(strArr[1].matches("[0-9]+") == false){// 匹配停车位是否是数字
            System.out.println("initPark error 2 ");
            return;
        }
        if(strArr[2].matches("[0-9]{1}") == false){// 起始停车方向只能是一位数字
            System.out.println("initPark error 3 ");
            return;
        }
        
        int num = Integer.valueOf(strArr[1]);
        left = Integer.valueOf(strArr[2]);
        if(!(left==0 || left==1) || num<=0){// 停车方向只能是0 1 停车数量要大于0 
            System.out.println("initPark error 4 ");
            return;
        }
        if(parking.size()!=0 || count.size()!=0){// 初始停车场已经存在 错误
            System.out.println("initPark error 4");
            return;
        }
        for(int i =0;i<num;i++)
            parking.add("-1");// 空停车下标为 -1
        System.out.println("initPark "+ num);
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值