题目就是上面的
但是对输出要求比较多的,输出没有截图下来,题目很简单的。主要一些错误操作
两个公共合法判断
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); } }