完整的“模拟路口”Java代码

 虽然繁琐了些,但还能看。

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++;
    }

}

收获:重复的代码写成方法,方便调用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值