zoukankan      html  css  js  c++  java
  • 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);
        }
    
    }
  • 相关阅读:
    高质量的函数 —— 《clean code》读后感
    保证代码的高质量 —— 《clean code》读后感
    [转 TDD] 如何坚持TDD:使用者出现的问题以及解决方案
    注释 —— 《clean code》读后感
    注释 —— 《clean code》读后感
    如何命名 —— 《clean code》读后感
    高质量的函数 —— 《clean code》读后感
    保证代码的高质量 —— 《clean code》读后感
    格式 —— 《clean code》读后感
    华为内部面试题库(14)
  • 原文地址:https://www.cnblogs.com/theskulls/p/5318814.html
Copyright © 2011-2022 走看看