虽然繁琐了些,但还能看。
package com.mine.test;
/**
* @author: lihongyan
* @Date: 2018/11/7 15:28
* @Description: 模拟路口 笔试题
*/
public class InterviewQuestion1107_2 {
//全局变量,表示一辆车
private static int no;
static {
no = 1;
}
public static void main(String[] args) {
//北南 南北 直行
int[] n2s = init();
int[] s2n = init();
//北东 南西 左转
int[] n2e = init();
int[] s2w = init();
//西东 东西 直行
int[] w2e = init();
int[] e2w = init();
//西北 东南 左转
int[] w2n = init();
int[] e2s = init();
//右转:北西 西南 南东 东北
int[] n2w = init();
int[] w2s = init();
int[] s2e = init();
int[] e2n = init();
showArrElements(e2n);
//模拟车辆通过
//execute(e2n);
//打印数组元素
showArrElements(e2n);
System.out.println();
System.out.println("===================================================================================");
//模拟100个时间单位的路口通行情况 18:46 1107
showArrElements(n2s);
showArrElements(s2n);
showArrElements(n2e);
showArrElements(s2w);
showArrElements(w2e);
showArrElements(e2w);
showArrElements(w2n);
showArrElements(e2s);
showArrElements(n2w);
showArrElements(w2s);
showArrElements(s2e);
showArrElements(e2n);
int flag = 1;
for (int i = 0; i < 100; i++) {
//车辆加1
addNewElement(n2w);
addNewElement(w2s);
addNewElement(s2e);
addNewElement(e2n);
//右转的
System.out.println();
System.out.println("------------------------第"+(i+1)+"帧-------------------------");
System.out.print("右转:");
System.out.print("n2w");
showArrElements(n2w);
System.out.print("w2s");
showArrElements(w2s);
System.out.print("s2e");
showArrElements(s2e);
System.out.print("e2n");
showArrElements(e2n);
System.out.println();
switch (flag){
case 1 :
System.out.print("南北直行:");
addNewElement(n2s);
addNewElement(s2n);
showArrElements(n2s);
showArrElements(s2n);
showArrElements(n2e);
showArrElements(s2w);
showArrElements(w2e);
showArrElements(e2w);
showArrElements(w2n);
showArrElements(e2s);
flag = 2;
break;
case 2 :
System.out.print("东西直行:");
addNewElement(n2e);
addNewElement(s2w);
showArrElements(n2s);
showArrElements(s2n);
showArrElements(n2e);
showArrElements(s2w);
showArrElements(w2e);
showArrElements(e2w);
showArrElements(w2n);
showArrElements(e2s);
flag = 3;
break;
case 3 :
System.out.print("北东 南西 左转");
addNewElement(w2e);
addNewElement(e2w);
showArrElements(n2s);
showArrElements(s2n);
showArrElements(n2e);
showArrElements(s2w);
showArrElements(w2e);
showArrElements(e2w);
showArrElements(w2n);
showArrElements(e2s);
flag = 4;
break;
case 4 :
System.out.print("西北 东南 左转");
addNewElement(w2n);
addNewElement(e2s);
showArrElements(n2s);
showArrElements(s2n);
showArrElements(n2e);
showArrElements(s2w);
showArrElements(w2e);
showArrElements(e2w);
showArrElements(w2n);
showArrElements(e2s);
flag = 1;
}
}
}
//初始化数组的方法
/*
* @Description 用于给数组初始化
* @Author lihongyan
* @Date 2018/11/7 15:59
* @Param []
* @Return int[] 返回一个int数组
* @Exception
*/
public static int[] init(){
int[] init = {no++,no++,no++};
return init;
}
//展示数组元素的方法
public static void showArrElements(int[] arr){
// System.out.print("元素:[ ");
System.out.print("[ ");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.print("]");
}
//新的车辆进入的方法
public static void addNewElement(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
arr[i] = arr[i+1];
}
arr[arr.length-1] = no++;
}
}
收获:重复的代码写成方法,方便调用。