⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wanderthread.java

📁 用java实现随机漫步问题的分析.详细内容见说明文档.
💻 JAVA
字号:
/* * WanderThread.java  Beta 1.0 08/04 * * Copyright 2007 Grassoft. All rights reserved. */package wanderer;import javax.swing.*;import javax.swing.table.*;/** * * 继承Thread类,该线程完成漫游分析的主要工作。 */public class WanderThread extends Thread {    private BugMove move;    private BugTracer bug;    public static Map map;    private int Times;    private int Conter;    private int Widt;    private int Heig;    private int SumPace;    private int SumTime;    private long Timer;    private DefaultTableModel AnaTableModel;    private DefaultTableModel StaTableModel;    public WanderThread(int WLen, int WWid ,int WTimes, DefaultTableModel WAnaTable, DefaultTableModel WStaTable) {        Widt = WLen;        Heig = WWid;        map = new Map(Widt,Heig);//每次实验开始前实例化map                //单次实验漫游次数        Times = WTimes;        //“分析”表格        AnaTableModel = WAnaTable;        //“统计”表格        StaTableModel = WStaTable;                //单次实验总步数及总时间        SumPace = 0;        SumTime = 0;    }//构造方法    @Override    public void run() {                //每次实验前清空“分析表格”        Wanderer.CleanTable(AnaTableModel);        for (int i = 1; i <= Times; i++) {            //调用漫游方法Wander,i为漫游序号            Wander(i);        }        //实验结束,打印“统计”表格        PrintSta();    }        //Wander为实现单次漫游方法    private void Wander(int i) {        initAnalyser();        //计时器开始计时        Timer = System.currentTimeMillis() ;        while (true) {            //实例化随机前进方向            move = new BugMove();            //处理边缘问题            if ((bug.x == 0 && move.x == -1) || (bug.x == Widt - 1 && move.x == 1) || (bug.y == 0 && move.y == -1) || (bug.y == Heig - 1 && move.y == 1)) {                continue;            }            bug.x += move.x;            bug.y += move.y;            bug.pace++;            if (map.locat[bug.x][bug.y] == 0) {                Conter++;//记录已漫游格数            }            map.locat[bug.x][bug.y]++;            if (Conter == map.sum - 1 || bug.pace >= 500000000) {                //计时结束                Timer = System.currentTimeMillis() - Timer;                //打印“分析”表格,单次漫游结果                PrintTable(String.valueOf(i), String.valueOf(bug.pace), "(" + String.valueOf(map.begin[0]) + "," + String.valueOf(map.begin[1]) + ")", "(" + String.valueOf(bug.x) + "," + String.valueOf(bug.y) + ")", String.valueOf(Timer) + "ms", AnaTableModel);                                SumTime += Timer;                SumPace += bug.pace;                //单次漫游结束                break;            }        }    }    //每次漫游前初始化    private void initAnalyser() {        Timer = (long) 0;                Conter = 0;        map.Init();                bug = new BugTracer();        bug.x = map.begin[0];        bug.y = map.begin[1];    }                //打印“统计”表格    private void PrintSta() {        //打印实验序号Expr        String c1 = String.valueOf(Wanderer.Expr);        String c2 = String.valueOf(Times);        String c3 = String.valueOf(Widt) + "x" + String.valueOf(Heig);        String c4 = String.valueOf((int) (SumPace / Times));        String c5 = String.valueOf((long) (SumTime / Times)) + "ms";        PrintTable(c1, c2, c3, c4, c5, StaTableModel);        Wanderer.Expr++;//实验序号加1    }        //打印窗口方法    private void PrintTable(String c1,String c2,String c3,String c4,String c5,DefaultTableModel Table) {              String rowData[] = {c1, c2, c3, c4, c5};        try {            Table.addRow(rowData);        } catch (Exception e) {            e.printStackTrace();        }        }}    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -